UTF8String_length() API change
diff --git a/libasn1compiler/asn1c_constraint.c b/libasn1compiler/asn1c_constraint.c
index 9a9e667..4746951 100644
--- a/libasn1compiler/asn1c_constraint.c
+++ b/libasn1compiler/asn1c_constraint.c
@@ -310,7 +310,6 @@
/*
* UTF8String type is a special case in many respects.
*/
- assert(range_stop > 255); /* This one's unobvious */
if(got_size) {
/*
* Size has been already determined.
@@ -337,9 +336,8 @@
ct->_compile_mark);
INDENT(+1);
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 -1; /* Alphabet (sic!) test failed. */\n");
+ OUT("if(UTF8String_length((const UTF8String_t *)sptr) < 0)\n");
+ OUT("\treturn -1; /* Alphabet (sic!) test failed. */\n");
OUT("\n");
} else {
if(use_table) {
@@ -511,8 +509,13 @@
OUT("size = st->size >> 1;\t/* 2 byte per character */\n");
break;
case ASN_STRING_UTF8String:
- OUT("size = UTF8String_length(st, td->name, app_errlog, app_key);\n");
- OUT("if(size == (size_t)-1) return -1;\n");
+ OUT("size = UTF8String_length(st);\n");
+ OUT("if((ssize_t)size < 0) {\n");
+ OUT("\t_ASN_ERRLOG(app_errlog, app_key,\n");
+ OUT("\t\t\"%%s: UTF-8: broken encoding (%%s:%%d)\",\n");
+ OUT("\t\ttd->name, __FILE__, __LINE__);\n");
+ OUT("\treturn -1;\n");
+ OUT("}\n");
break;
case ASN_CONSTR_SET_OF:
case ASN_CONSTR_SEQUENCE_OF: