lib: Fix macro IS_INVALID_CHAR (for UTF-16 with macro XML_MIN_SIZE defined)
What happens is that with macro XML_MIN_SIZE defined, for UTF-16 macro IS_INVALID_CHAR was being set to .. > #define IS_INVALID_CHAR(enc, p, n) (AS_NORMAL_ENCODING(enc)->isInvalid##n(enc, p)) .. which calls NULL pointers in .isInvalid{2,3,4} at runtime. For UTF-16 we actually need what xmltok_impl.c does for macro IS_INVALID_CHAR when it has not yet been defined: > # ifndef IS_INVALID_CHAR > # define IS_INVALID_CHAR(enc, ptr, n) (0) > # endif So the fix is a combination of these two: - Use .isInvalid{2,3,4} where needed and available and - return 0/false for UTF-16 where .isInvalid{2,3,4} are NULL.
This commit is contained in:
parent
3b1b81f028
commit
ed36812db2
@ -3,12 +3,20 @@ NOTE: We are looking for help with a few things:
|
||||
If you can help, please get in touch. Thanks!
|
||||
|
||||
Release X.X.X XXX XXXXX XX XXXX
|
||||
Bug fixes:
|
||||
#332 #470 For (non-default) compilation with -DEXPAT_MIN_SIZE=ON (CMake)
|
||||
or CPPFLAGS=-DXML_MIN_SIZE (GNU Autotools): Fix segfault
|
||||
for UTF-16 payloads containing CDATA sections.
|
||||
|
||||
Other changes:
|
||||
#457 Unexpose symbol _INTERNAL_trim_to_complete_utf8_characters
|
||||
#458 #459 CMake: Support absolute paths for both CMAKE_INSTALL_LIBDIR
|
||||
and CMAKE_INSTALL_INCLUDEDIR
|
||||
#468 #469 xmlwf: Improve help output and the xmlwf man page
|
||||
|
||||
Special thanks to:
|
||||
Dimitry Andric
|
||||
|
||||
Release 2.3.0 Thu March 25 2021
|
||||
Bug fixes:
|
||||
#438 When calling XML_ParseBuffer without a prior successful call to
|
||||
|
@ -259,8 +259,14 @@ sb_byteToAscii(const ENCODING *enc, const char *p) {
|
||||
|
||||
#define IS_NAME_CHAR(enc, p, n) (AS_NORMAL_ENCODING(enc)->isName##n(enc, p))
|
||||
#define IS_NMSTRT_CHAR(enc, p, n) (AS_NORMAL_ENCODING(enc)->isNmstrt##n(enc, p))
|
||||
#define IS_INVALID_CHAR(enc, p, n) \
|
||||
(AS_NORMAL_ENCODING(enc)->isInvalid##n(enc, p))
|
||||
#ifdef XML_MIN_SIZE
|
||||
# define IS_INVALID_CHAR(enc, p, n) \
|
||||
(AS_NORMAL_ENCODING(enc)->isInvalid##n \
|
||||
&& AS_NORMAL_ENCODING(enc)->isInvalid##n(enc, p))
|
||||
#else
|
||||
# define IS_INVALID_CHAR(enc, p, n) \
|
||||
(AS_NORMAL_ENCODING(enc)->isInvalid##n(enc, p))
|
||||
#endif
|
||||
|
||||
#ifdef XML_MIN_SIZE
|
||||
# define IS_NAME_CHAR_MINBPC(enc, p) \
|
||||
|
Loading…
Reference in New Issue
Block a user