diff --git a/libasn1compiler/asn1c_constraint.c b/libasn1compiler/asn1c_constraint.c index 22b6543195f3d50ff3accfc202bdc3167d9e8898..deeba8f7379e3f13c222caf8d2a09ead65071aec 100644 --- a/libasn1compiler/asn1c_constraint.c +++ b/libasn1compiler/asn1c_constraint.c @@ -322,7 +322,7 @@ asn1c_emit_constraint_tables(arg_t *arg, int got_size) { if(utf8_full_alphabet_check) { OUT("if(UTF8String_length((UTF8String_t *)sptr, td->name, \n"); OUT("\tapp_errlog, app_key) == -1)\n"); - OUT("\t\treturn 0; /* Alphabet (sic!) test failed. */\n"); + OUT("\t\treturn -1; /* Alphabet (sic!) test failed. */\n"); OUT("\n"); } else { if(use_table) { @@ -333,7 +333,7 @@ asn1c_emit_constraint_tables(arg_t *arg, int got_size) { emit_alphabet_check_loop(arg, range); } } - OUT("return 1;\n"); + OUT("return 0;\n"); INDENT(-1); OUT("}\n"); OUT("\n"); @@ -366,33 +366,33 @@ emit_alphabet_check_loop(arg_t *arg, asn1cnst_range_t *range) { OUT("for(; ch < end; ch++) {\n"); INDENT(+1); OUT("uint8_t cv = *ch;\n"); - if(!range) OUT("if(cv >= 0x80) return 0;\n"); + if(!range) OUT("if(cv >= 0x80) return -1;\n"); natural_stop = 0xffffffffUL; break; case ASN_STRING_UniversalString: OUT("const uint32_t *ch = st->buf;\n"); OUT("const uint32_t *end = ch + st->size;\n"); OUT("\n"); - OUT("if(st->size % 4) return 0; /* (size%4)! */\n"); + OUT("if(st->size % 4) return -1; /* (size%4)! */\n"); OUT("for(; ch < end; ch++) {\n"); INDENT(+1); OUT("uint32_t cv = (((const uint8_t *)ch)[0] << 24)\n"); OUT("\t\t| (((const uint8_t *)ch)[1] << 16)\n"); OUT("\t\t| (((const uint8_t *)ch)[2] << 8)\n"); OUT("\t\t| ((const uint8_t *)ch)[3];\n"); - if(!range) OUT("if(cv > 255) return 0;\n"); + if(!range) OUT("if(cv > 255) return -1;\n"); natural_stop = 0xffffffffUL; break; case ASN_STRING_BMPString: OUT("const uint16_t *ch = st->buf;\n"); OUT("const uint16_t *end = ch + st->size;\n"); OUT("\n"); - OUT("if(st->size % 2) return 0; /* (size%2)! */\n"); + OUT("if(st->size % 2) return -1; /* (size%2)! */\n"); OUT("for(; ch < end; ch++) {\n"); INDENT(+1); OUT("uint16_t cv = (((const uint8_t *)ch)[0] << 8)\n"); OUT("\t\t| ((const uint8_t *)ch)[1];\n"); - if(!range) OUT("if(cv > 255) return 0;\n"); + if(!range) OUT("if(cv > 255) return -1;\n"); natural_stop = 0xffff; break; case ASN_BASIC_OCTET_STRING: @@ -410,9 +410,9 @@ emit_alphabet_check_loop(arg_t *arg, asn1cnst_range_t *range) { if(range) { OUT("if(!("); emit_range_comparison_code(arg, range, "cv", 0, natural_stop); - OUT(")) return 0;\n"); + OUT(")) return -1;\n"); } else { - OUT("if(!table[cv]) return 0;\n"); + OUT("if(!table[cv]) return -1;\n"); } INDENT(-1); diff --git a/tests/19-param-OK.asn1.-P b/tests/19-param-OK.asn1.-P index 6d3b865fb870959763a720dee19d624ae50cbc28..17066a2843fb1a6d5adfa38f8ed3c354c192d8e3 100644 --- a/tests/19-param-OK.asn1.-P +++ b/tests/19-param-OK.asn1.-P @@ -246,9 +246,9 @@ static int check_permitted_alphabet_1(const void *sptr) { for(; ch < end; ch++) { uint8_t cv = *ch; - if(!table[cv]) return 0; + if(!table[cv]) return -1; } - return 1; + return 0; } @@ -268,7 +268,7 @@ memb_IA5String_1_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if(check_permitted_alphabet_1(sptr)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name); diff --git a/tests/42-real-life-OK.asn1.-PR b/tests/42-real-life-OK.asn1.-PR index aaa2e9f544f0da2ffbc287be8000c06e29acfaf8..a934fff1b79a4708fd196dc5fdf523261ac55c66 100644 --- a/tests/42-real-life-OK.asn1.-PR +++ b/tests/42-real-life-OK.asn1.-PR @@ -52,7 +52,7 @@ memb_varsets_1_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if((size >= 1)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name); @@ -359,7 +359,7 @@ memb_vset_3_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if((size >= 1)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name); diff --git a/tests/50-constraint-OK.asn1.-P b/tests/50-constraint-OK.asn1.-P index 38416dbe620dfd9c7c6d79db981dcd5a7e816eb5..6fca2aad2d8fa53b7b95f02804ceef225682469f 100644 --- a/tests/50-constraint-OK.asn1.-P +++ b/tests/50-constraint-OK.asn1.-P @@ -140,7 +140,7 @@ Int2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if((value >= 0)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name); @@ -259,7 +259,7 @@ Int3_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if((value >= 0 && value <= 10)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name); @@ -491,7 +491,7 @@ Int5_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if((value == 5)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name); @@ -810,9 +810,9 @@ static int check_permitted_alphabet_1(const void *sptr) { for(; ch < end; ch++) { uint8_t cv = *ch; - if(!(cv <= 127)) return 0; + if(!(cv <= 127)) return -1; } - return 1; + return 0; } @@ -836,7 +836,7 @@ Str2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if(((size <= 20) || (size >= 25 && size <= 30)) && check_permitted_alphabet_1(sptr)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name); @@ -953,9 +953,9 @@ static int check_permitted_alphabet_2(const void *sptr) { for(; ch < end; ch++) { uint8_t cv = *ch; - if(!table[cv]) return 0; + if(!table[cv]) return -1; } - return 1; + return 0; } @@ -979,7 +979,7 @@ Str3_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if(((size >= 10 && size <= 20) || (size >= 25 && size <= 27)) && check_permitted_alphabet_2(sptr)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name); @@ -1085,9 +1085,9 @@ static int check_permitted_alphabet_3(const void *sptr) { for(; ch < end; ch++) { uint8_t cv = *ch; - if(!(cv >= 65 && cv <= 70)) return 0; + if(!(cv >= 65 && cv <= 70)) return -1; } - return 1; + return 0; } @@ -1108,7 +1108,7 @@ PER_Visible_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if(check_permitted_alphabet_3(sptr)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name); @@ -1214,9 +1214,9 @@ static int check_permitted_alphabet_4(const void *sptr) { for(; ch < end; ch++) { uint8_t cv = *ch; - if(!(cv >= 69 && cv <= 70)) return 0; + if(!(cv >= 69 && cv <= 70)) return -1; } - return 1; + return 0; } @@ -1237,7 +1237,7 @@ PER_Visible_2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if(check_permitted_alphabet_4(sptr)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name); @@ -1343,9 +1343,9 @@ static int check_permitted_alphabet_5(const void *sptr) { for(; ch < end; ch++) { uint8_t cv = *ch; - if(!(cv >= 65 && cv <= 70)) return 0; + if(!(cv >= 65 && cv <= 70)) return -1; } - return 1; + return 0; } @@ -1366,7 +1366,7 @@ Not_PER_Visible_1_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if(check_permitted_alphabet_5(sptr)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name); @@ -1698,9 +1698,9 @@ static int check_permitted_alphabet_6(const void *sptr) { for(; ch < end; ch++) { uint8_t cv = *ch; - if(!(cv >= 65 && cv <= 70)) return 0; + if(!(cv >= 65 && cv <= 70)) return -1; } - return 1; + return 0; } @@ -1724,7 +1724,7 @@ SIZE_but_not_FROM_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if((size >= 1 && size <= 4) && check_permitted_alphabet_6(sptr)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name); @@ -1830,9 +1830,9 @@ static int check_permitted_alphabet_7(const void *sptr) { for(; ch < end; ch++) { uint8_t cv = *ch; - if(!(cv >= 65 && cv <= 68)) return 0; + if(!(cv >= 65 && cv <= 68)) return -1; } - return 1; + return 0; } @@ -1856,7 +1856,7 @@ SIZE_and_FROM_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if((size >= 1 && size <= 4) && check_permitted_alphabet_7(sptr)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name); @@ -1962,9 +1962,9 @@ static int check_permitted_alphabet_8(const void *sptr) { for(; ch < end; ch++) { uint8_t cv = *ch; - if(!(cv >= 65 && cv <= 70)) return 0; + if(!(cv >= 65 && cv <= 70)) return -1; } - return 1; + return 0; } @@ -1985,7 +1985,7 @@ Neither_SIZE_nor_FROM_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if(check_permitted_alphabet_8(sptr)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name); @@ -2103,10 +2103,10 @@ static int check_permitted_alphabet_9(const void *sptr) { for(; ch < end; ch++) { uint8_t cv = *ch; - if(cv >= 0x80) return 0; - if(!table[cv]) return 0; + if(cv >= 0x80) return -1; + if(!table[cv]) return -1; } - return 1; + return 0; } @@ -2131,7 +2131,7 @@ Utf8_3_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if((size >= 1 && size <= 2) && check_permitted_alphabet_9(sptr)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name); @@ -2247,7 +2247,7 @@ Utf8_2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, if((size >= 1 && size <= 2)) { /* Constraint check succeeded */ - return 1; + return 0; } else { _ASN_ERRLOG(app_errlog, app_key, "%s: constraint failed", td->name);