Merge pull request #1895 from wangtsiao/dev/fix_utf8_mask

修复 ASN.1 UTF8String 多字节字符校验
This commit is contained in:
Zhi Guan
2026-06-13 17:23:55 +08:00
committed by GitHub
2 changed files with 9 additions and 1 deletions

View File

@@ -1281,7 +1281,7 @@ static int asn1_utf8char_from_bytes(uint32_t *c, const uint8_t **pin, size_t *pi
utf8char = in[0];
for (i = 1; i < utf8char_len; i++) {
if ((in[i] & 0x60) != 0x80) {
if ((in[i] & 0xc0) != 0x80) {
//error_print(); // disable error_print for _is_ compare
return -1;
}

View File

@@ -500,7 +500,10 @@ static int test_asn1_utf8_string(void)
"hello",
"world",
"Just do it!",
"J\303\274rgen",
"\344\270\255",
};
const char invalid_utf8[] = { (char)0xc3, 'A' };
uint8_t buf[256];
uint8_t *p = buf;
const uint8_t *cp = buf;
@@ -530,6 +533,10 @@ static int test_asn1_utf8_string(void)
error_print();
return -1;
}
if (asn1_string_is_utf8_string(invalid_utf8, sizeof(invalid_utf8)) != 0) {
error_print();
return -1;
}
printf("%s() ok\n", __FUNCTION__);
return 1;
}
@@ -841,6 +848,7 @@ static int test_asn1_from_der_null_args(void)
int main(void)
{
if (test_asn1_tag() != 1) goto err;
if (test_asn1_utf8_string() != 1) goto err;
/*
if (test_asn1_length() != 1) goto err;
if (test_asn1_length_from_ber() != 1) goto err;