deeper validation

diff --git a/libasn1compiler/asn1c_C.c b/libasn1compiler/asn1c_C.c
index 7d66b1b..a2a09f2 100644
--- a/libasn1compiler/asn1c_C.c
+++ b/libasn1compiler/asn1c_C.c
@@ -1067,7 +1067,7 @@
 	OUT("td->elements_count = asn_DEF_%s.elements_count;\n", type_name);
 	if(etd_spec != ETD_NO_SPECIFICS) {
 		INDENT(-1);
-		OUT("    /* ");
+		OUT("     /* ");
 	}
 	OUT("td->specifics      = asn_DEF_%s.specifics;",        type_name);
 	if(etd_spec == ETD_NO_SPECIFICS) {
diff --git a/libasn1compiler/asn1c_constraint.c b/libasn1compiler/asn1c_constraint.c
index 0729d08..7809783 100644
--- a/libasn1compiler/asn1c_constraint.c
+++ b/libasn1compiler/asn1c_constraint.c
@@ -170,8 +170,17 @@
 	INDENT(-1);
 	OUT(") {\n");
 		INDENT(+1);
-		OUT("/* Constraint check succeeded */\n");
-		OUT("return 0;\n");
+		switch(etype) {
+		case ASN_CONSTR_SEQUENCE_OF:
+			OUT("/* SEQUENCE validation code is the same as SET */\n");
+		case ASN_CONSTR_SET_OF:
+			OUT("/* Perform validation of the inner elements */\n");
+			OUT("return SET_OF_constraint(td, list, app_errlog, app_key);\n");
+			break;
+		default:
+			OUT("/* Constraint check succeeded */\n");
+			OUT("return 0;\n");
+		}
 		INDENT(-1);
 	OUT("} else {\n");
 		INDENT(+1);