Merge pull request #2768 from signalwire/libexpat

[xmlrpc-c] Expat/xmltok: Add missing validation of encoding
This commit is contained in:
Andrey Volk 2025-02-25 23:48:04 +03:00 committed by GitHub
commit f11e95e3fb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -32,7 +32,7 @@ See the file copying.txt for copying permission.
case BT_LEAD ## n: \ case BT_LEAD ## n: \
if (end - ptr < n) \ if (end - ptr < n) \
return XML_TOK_PARTIAL_CHAR; \ return XML_TOK_PARTIAL_CHAR; \
if (!IS_NAME_CHAR(enc, ptr, n)) { \ if (IS_INVALID_CHAR(enc, ptr, n) || ! IS_NAME_CHAR(enc, ptr, n)) { \
*nextTokPtr = ptr; \ *nextTokPtr = ptr; \
return XML_TOK_INVALID; \ return XML_TOK_INVALID; \
} \ } \
@ -60,7 +60,7 @@ See the file copying.txt for copying permission.
case BT_LEAD ## n: \ case BT_LEAD ## n: \
if (end - ptr < n) \ if (end - ptr < n) \
return XML_TOK_PARTIAL_CHAR; \ return XML_TOK_PARTIAL_CHAR; \
if (!IS_NMSTRT_CHAR(enc, ptr, n)) { \ if (IS_INVALID_CHAR(enc, ptr, n) || ! IS_NMSTRT_CHAR(enc, ptr, n)) { \
*nextTokPtr = ptr; \ *nextTokPtr = ptr; \
return XML_TOK_INVALID; \ return XML_TOK_INVALID; \
} \ } \
@ -1157,6 +1157,10 @@ int PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end,
case BT_LEAD ## n: \ case BT_LEAD ## n: \
if (end - ptr < n) \ if (end - ptr < n) \
return XML_TOK_PARTIAL_CHAR; \ return XML_TOK_PARTIAL_CHAR; \
if (IS_INVALID_CHAR(enc, ptr, n)) { \
*nextTokPtr = ptr; \
return XML_TOK_INVALID; \
} \
if (IS_NMSTRT_CHAR(enc, ptr, n)) { \ if (IS_NMSTRT_CHAR(enc, ptr, n)) { \
ptr += n; \ ptr += n; \
tok = XML_TOK_NAME; \ tok = XML_TOK_NAME; \