Skip to content
Snippets Groups Projects
Commit 775885e9 authored by Lev Walkin's avatar Lev Walkin
Browse files

proper constraints return values

parent 6db2f09f
No related branches found
No related tags found
No related merge requests found
......@@ -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);
......
......@@ -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);
......
......@@ -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);
......
......@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment