| diff -ru misc/expat-2.5.0/lib/makefile.mk misc/build/expat-2.5.0/lib/makefile.mk |
| --- misc/expat-2.5.0/lib/makefile.mk 2023-02-06 23:22:07.391327553 +0100 |
| +++ misc/build/expat-2.5.0/lib/makefile.mk 2023-02-06 23:22:40.584115842 +0100 |
| @@ -1,1 +1,79 @@ |
| -dummy |
| +#************************************************************** |
| +# |
| +# Licensed to the Apache Software Foundation (ASF) under one |
| +# or more contributor license agreements. See the NOTICE file |
| +# distributed with this work for additional information |
| +# regarding copyright ownership. The ASF licenses this file |
| +# to you under the Apache License, Version 2.0 (the |
| +# "License"); you may not use this file except in compliance |
| +# with the License. You may obtain a copy of the License at |
| +# |
| +# http://www.apache.org/licenses/LICENSE-2.0 |
| +# |
| +# Unless required by applicable law or agreed to in writing, |
| +# software distributed under the License is distributed on an |
| +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| +# KIND, either express or implied. See the License for the |
| +# specific language governing permissions and limitations |
| +# under the License. |
| +# |
| +#************************************************************** |
| +PRJ=..$/..$/..$/..$/.. |
| + |
| +PRJNAME=expat |
| +TARGET=expat |
| +LIBTARGET=NO |
| +EXTERNAL_WARNINGS_NOT_ERRORS=TRUE |
| + |
| +# --- Settings ----------------------------------------------------- |
| +.INCLUDE : settings.mk |
| +# --- Files -------------------------------------------------------- |
| + |
| +CFLAGS+=-I.. |
| + |
| +.IF "$(OS)"=="WNT" |
| +CDEFS+=-DWIN32 |
| +.ELSE |
| +CDEFS+=-DHAVE_EXPAT_CONFIG_H |
| +.ENDIF |
| + |
| +.IF "$(OS)"=="MACOSX" && "$(SYSBASE)"!="" |
| +CDEFS+=-DHAVE_MEMMOVE -DHAVE_BCOPY |
| +.ENDIF # "$(OS)"=="MACOSX" |
| + |
| +SECOND_BUILD=UNICODE |
| +UNICODE_SLOFILES=$(SLO)$/xmlparse.obj |
| +UNICODECDEFS+=-DXML_UNICODE |
| + |
| +LIB1ARCHIV=$(LB)$/libascii_$(TARGET)_xmlparse.a |
| +LIB1TARGET=$(SLB)$/ascii_$(TARGET)_xmlparse.lib |
| +LIB1OBJFILES=$(SLO)$/xmlparse.obj |
| + |
| +LIB2ARCHIV=$(LB)$/lib$(TARGET)_xmlparse.a |
| +LIB2TARGET=$(SLB)$/$(TARGET)_xmlparse.lib |
| +LIB2OBJFILES =$(REAL_UNICODE_SLOFILES) |
| + |
| +LIB3ARCHIV=$(LB)$/lib$(TARGET)_xmltok.a |
| +LIB3TARGET=$(SLB)$/$(TARGET)_xmltok.lib |
| +LIB3OBJFILES=$(SLO)$/xmlrole.obj $(SLO)$/xmltok.obj |
| + |
| +.IF "$(BUILD_X64)"!="" |
| +# ---------------- X64 stuff special --------------------- |
| +# use UNICODE only because shell/shlxthandler |
| +# doesn't link against ascii_expat_xmlparse |
| +#--------------------------------------------------------- |
| +SLOFILES_X64=$(SLO_X64)$/xmlparse.obj \ |
| + $(SLO_X64)$/xmlrole.obj \ |
| + $(SLO_X64)$/xmltok.obj |
| +CDEFS_X64+=-DXML_UNICODE -DWIN32 |
| +CFLAGS_X64+=-I.. |
| +LIB1TARGET_X64=$(SLB_X64)$/$(TARGET)_xmlparse.lib |
| +LIB1OBJFILES_X64=$(SLO_X64)$/xmlparse.obj |
| +LIB2TARGET_X64=$(SLB_X64)$/$(TARGET)_xmltok.lib |
| +LIB2OBJFILES_X64=$(SLO_X64)$/xmlrole.obj $(SLO_X64)$/xmltok.obj |
| +.ENDIF # "$(BUILD_X64)"!="" |
| + |
| +# --- Targets ------------------------------------------------------ |
| +.INCLUDE : set_wntx64.mk |
| +.INCLUDE : target.mk |
| +.INCLUDE : tg_wntx64.mk |
| diff -ru misc/expat-2.5.0/Changes misc/build/expat-2.5.0/Changes |
| --- misc/expat-2.5.0/Changes 2022-10-25 17:09:08.000000000 +0200 |
| +++ misc/build/expat-2.5.0/Changes 2023-02-06 23:22:40.572115558 +0100 |
| @@ -2,6 +2,9 @@ |
| https://github.com/libexpat/libexpat/labels/help%20wanted |
| If you can help, please get in touch. Thanks! |
| |
| +Release 2.5.0-aoo Sat February 04 2023 |
| + Adapted to AOO sources. |
| + |
| Release 2.5.0 Tue October 25 2022 |
| Security fixes: |
| #616 #649 #650 CVE-2022-43680 -- Fix heap use-after-free after overeager |
| diff -ru misc/expat-2.5.0/expat_config.h misc/build/expat-2.5.0/expat_config.h |
| --- misc/expat-2.5.0/expat_config.h 2022-10-25 17:34:58.000000000 +0200 |
| +++ misc/build/expat-2.5.0/expat_config.h 2023-02-06 23:22:40.604116318 +0100 |
| @@ -14,7 +14,7 @@ |
| /* #undef HAVE_ARC4RANDOM */ |
| |
| /* Define to 1 if you have the `arc4random_buf' function. */ |
| -#define HAVE_ARC4RANDOM_BUF 1 |
| +/* #undef HAVE_ARC4RANDOM_BUF */ |
| |
| /* Define to 1 if you have the <dlfcn.h> header file. */ |
| #define HAVE_DLFCN_H 1 |
| @@ -74,13 +74,13 @@ |
| #define PACKAGE "expat" |
| |
| /* Define to the address where bug reports for this package should be sent. */ |
| -#define PACKAGE_BUGREPORT "expat-bugs@libexpat.org" |
| +#define PACKAGE_BUGREPORT "dev@openoffice.apache.org" |
| |
| /* Define to the full name of this package. */ |
| #define PACKAGE_NAME "expat" |
| |
| /* Define to the full name and version of this package. */ |
| -#define PACKAGE_STRING "expat 2.5.0" |
| +#define PACKAGE_STRING "expat 2.5.0-aoo" |
| |
| /* Define to the one symbol short name of this package. */ |
| #define PACKAGE_TARNAME "expat" |
| @@ -89,7 +89,7 @@ |
| #define PACKAGE_URL "" |
| |
| /* Define to the version of this package. */ |
| -#define PACKAGE_VERSION "2.5.0" |
| +#define PACKAGE_VERSION "2.5.0-aoo" |
| |
| /* Define to 1 if all of the C90 standard headers exist (not just the ones |
| required in a freestanding environment). This macro is provided for |
| @@ -97,7 +97,7 @@ |
| #define STDC_HEADERS 1 |
| |
| /* Version number of package */ |
| -#define VERSION "2.5.0" |
| +#define VERSION "2.5.0-aoo" |
| |
| /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most |
| significant byte first (like Motorola and SPARC, unlike Intel). */ |
| @@ -119,8 +119,10 @@ |
| point. */ |
| #define XML_CONTEXT_BYTES 1024 |
| |
| +#if ! defined(_WIN32) |
| /* Define to include code reading entropy from `/dev/urandom'. */ |
| #define XML_DEV_URANDOM 1 |
| +#endif |
| |
| /* Define to make parameter entity parsing functionality available. */ |
| #define XML_DTD 1 |
| @@ -128,6 +130,11 @@ |
| /* Define to make XML Namespaces functionality available. */ |
| #define XML_NS 1 |
| |
| +/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */ |
| +#ifdef _MSC_VER |
| +# define __func__ __FUNCTION__ |
| +#endif |
| + |
| /* Define to empty if `const' does not conform to ANSI C. */ |
| /* #undef const */ |
| |
| diff -ru misc/expat-2.5.0/lib/siphash.h misc/build/expat-2.5.0/lib/siphash.h |
| --- misc/expat-2.5.0/lib/siphash.h 2022-10-23 17:16:56.000000000 +0200 |
| +++ misc/build/expat-2.5.0/lib/siphash.h 2023-02-06 23:22:40.588115938 +0100 |
| @@ -99,7 +99,15 @@ |
| #define SIPHASH_H |
| |
| #include <stddef.h> /* size_t */ |
| -#include <stdint.h> /* uint64_t uint32_t uint8_t */ |
| +#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER < 1600) |
| +/* For vs2003/7.1 up to vs2008/9.0; _MSC_VER 1600 is vs2010/10.0 */ |
| +typedef unsigned __int8 uint8_t; |
| +typedef unsigned __int32 uint32_t; |
| +typedef unsigned __int64 uint64_t; |
| +#else |
| +# include <stdint.h> /* uint64_t uint32_t uint8_t */ |
| +#endif |
| + |
| |
| /* |
| * Workaround to not require a C++11 compiler for using ULL suffix |
| diff -ru misc/expat-2.5.0/lib/winconfig.h misc/build/expat-2.5.0/lib/winconfig.h |
| --- misc/expat-2.5.0/lib/winconfig.h 2022-10-24 18:32:55.000000000 +0200 |
| +++ misc/build/expat-2.5.0/lib/winconfig.h 2023-02-06 23:22:40.584115842 +0100 |
| @@ -42,4 +42,11 @@ |
| #include <memory.h> |
| #include <string.h> |
| |
| +# define XML_NS 1 |
| +# define XML_DTD 1 |
| +# define XML_CONTEXT_BYTES 1024 |
| + |
| +/* we will assume all Windows platforms are little endian */ |
| +# define BYTEORDER 1234 |
| + |
| #endif /* ndef WINCONFIG_H */ |
| diff -ru misc/expat-2.5.0/lib/xmlparse.c misc/build/expat-2.5.0/lib/xmlparse.c |
| --- misc/expat-2.5.0/lib/xmlparse.c 2022-10-25 17:09:08.000000000 +0200 |
| +++ misc/build/expat-2.5.0/lib/xmlparse.c 2023-02-06 23:22:40.584115842 +0100 |
| @@ -60,8 +60,6 @@ |
| |
| #define XML_BUILDING_EXPAT 1 |
| |
| -#include <expat_config.h> |
| - |
| #if ! defined(_GNU_SOURCE) |
| # define _GNU_SOURCE 1 /* syscall prototype */ |
| #endif |
| @@ -79,9 +77,19 @@ |
| #include <limits.h> /* UINT_MAX */ |
| #include <stdio.h> /* fprintf */ |
| #include <stdlib.h> /* getenv, rand_s */ |
| -#include <stdint.h> /* uintptr_t */ |
| #include <math.h> /* isnan */ |
| |
| +#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER < 1600) |
| +/* vs2008/9.0 and earlier lack stdint.h; _MSC_VER 1600 is vs2010/10.0 */ |
| +# if defined(_WIN64) |
| +typedef unsigned __int64 uintptr_t; |
| +# else |
| +typedef unsigned __int32 uintptr_t; |
| +# endif |
| +#else |
| +# include <stdint.h> /* uintptr_t */ |
| +#endif |
| + |
| #ifdef _WIN32 |
| # define getpid GetCurrentProcessId |
| #else |
| @@ -94,7 +102,13 @@ |
| |
| #ifdef _WIN32 |
| # include "winconfig.h" |
| +#include <float.h> |
| +#ifndef isnan |
| +#define isnan _isnan |
| #endif |
| +#else |
| +# include <expat_config.h> |
| +#endif /* ndef _WIN32 */ |
| |
| #include "ascii.h" |
| #include "expat.h" |
| @@ -720,7 +734,9 @@ |
| |
| XML_Parser XMLCALL |
| XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep) { |
| - XML_Char tmp[2] = {nsSep, 0}; |
| + XML_Char tmp[2]; |
| + tmp[0] = nsSep; |
| + tmp[1] = 0; |
| return XML_ParserCreate_MM(encodingName, NULL, tmp); |
| } |
| |
| @@ -1354,7 +1370,9 @@ |
| would be otherwise. |
| */ |
| if (parser->m_ns) { |
| - XML_Char tmp[2] = {parser->m_namespaceSeparator, 0}; |
| + XML_Char tmp[2]; |
| + tmp[0] = parser->m_namespaceSeparator; |
| + tmp[1] = 0; |
| parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd); |
| } else { |
| parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd); |
| @@ -3469,6 +3487,8 @@ |
| i = 0; |
| if (nPrefixes) { |
| int j; /* hash table index */ |
| + unsigned int nsAttsSize; |
| + unsigned char oldNsAttsPower; |
| unsigned long version = parser->m_nsAttsVersion; |
| |
| /* Detect and prevent invalid shift */ |
| @@ -3476,8 +3496,8 @@ |
| return XML_ERROR_NO_MEMORY; |
| } |
| |
| - unsigned int nsAttsSize = 1u << parser->m_nsAttsPower; |
| - unsigned char oldNsAttsPower = parser->m_nsAttsPower; |
| + nsAttsSize = 1u << parser->m_nsAttsPower; |
| + oldNsAttsPower = parser->m_nsAttsPower; |
| /* size of hash table must be at least 2 * (# of prefixed attributes) */ |
| if ((nPrefixes << 1) |
| >> parser->m_nsAttsPower) { /* true for m_nsAttsPower = 0 */ |
| @@ -3922,6 +3942,7 @@ |
| if (parser->m_freeBindingList) { |
| b = parser->m_freeBindingList; |
| if (len > b->uriAlloc) { |
| + XML_Char *temp = NULL; |
| /* Detect and prevent integer overflow */ |
| if (len > INT_MAX - EXPAND_SPARE) { |
| return XML_ERROR_NO_MEMORY; |
| @@ -3937,7 +3958,7 @@ |
| } |
| #endif |
| |
| - XML_Char *temp = (XML_Char *)REALLOC( |
| + temp = (XML_Char *)REALLOC( |
| parser, b->uri, sizeof(XML_Char) * (len + EXPAND_SPARE)); |
| if (temp == NULL) |
| return XML_ERROR_NO_MEMORY; |
| @@ -4638,11 +4659,6 @@ |
| ASCII_I, ASCII_O, ASCII_N, ASCII_LPAREN, '\0'}; |
| static const XML_Char enumValueSep[] = {ASCII_PIPE, '\0'}; |
| static const XML_Char enumValueStart[] = {ASCII_LPAREN, '\0'}; |
| - |
| -#ifndef XML_DTD |
| - UNUSED_P(account); |
| -#endif |
| - |
| /* save one level of indirection */ |
| DTD *const dtd = parser->m_dtd; |
| |
| @@ -4650,6 +4666,10 @@ |
| const char **eventEndPP; |
| enum XML_Content_Quant quant; |
| |
| +#ifndef XML_DTD |
| + UNUSED_P(account); |
| +#endif |
| + |
| if (enc == parser->m_encoding) { |
| eventPP = &parser->m_eventPtr; |
| eventEndPP = &parser->m_eventEndPtr; |
| @@ -5290,12 +5310,13 @@ |
| if (parser->m_prologState.level >= parser->m_groupSize) { |
| if (parser->m_groupSize) { |
| { |
| + char *new_connector = NULL; |
| /* Detect and prevent integer overflow */ |
| if (parser->m_groupSize > (unsigned int)(-1) / 2u) { |
| return XML_ERROR_NO_MEMORY; |
| } |
| |
| - char *const new_connector = (char *)REALLOC( |
| + new_connector = (char *)REALLOC( |
| parser, parser->m_groupConnector, parser->m_groupSize *= 2); |
| if (new_connector == NULL) { |
| parser->m_groupSize /= 2; |
| @@ -5309,13 +5330,14 @@ |
| * The preprocessor guard addresses the "always false" warning |
| * from -Wtype-limits on platforms where |
| * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ |
| + int *new_scaff_index = NULL; |
| #if UINT_MAX >= SIZE_MAX |
| if (parser->m_groupSize > (size_t)(-1) / sizeof(int)) { |
| return XML_ERROR_NO_MEMORY; |
| } |
| #endif |
| |
| - int *const new_scaff_index = (int *)REALLOC( |
| + new_scaff_index = (int *)REALLOC( |
| parser, dtd->scaffIndex, parser->m_groupSize * sizeof(int)); |
| if (new_scaff_index == NULL) |
| return XML_ERROR_NO_MEMORY; |
| @@ -6404,13 +6426,14 @@ |
| } |
| } else { |
| DEFAULT_ATTRIBUTE *temp; |
| + int count; |
| |
| /* Detect and prevent integer overflow */ |
| if (type->allocDefaultAtts > INT_MAX / 2) { |
| return 0; |
| } |
| |
| - int count = type->allocDefaultAtts * 2; |
| + count = type->allocDefaultAtts * 2; |
| |
| /* Detect and prevent integer overflow. |
| * The preprocessor guard addresses the "always false" warning |
| @@ -7072,22 +7095,26 @@ |
| /* check for overflow (table is half full) */ |
| if (table->used >> (table->power - 1)) { |
| unsigned char newPower = table->power + 1; |
| + size_t newSize; |
| + unsigned long newMask; |
| + size_t tsize; |
| + NAMED **newV = NULL; |
| |
| /* Detect and prevent invalid shift */ |
| if (newPower >= sizeof(unsigned long) * 8 /* bits per byte */) { |
| return NULL; |
| } |
| |
| - size_t newSize = (size_t)1 << newPower; |
| - unsigned long newMask = (unsigned long)newSize - 1; |
| + newSize = (size_t)1 << newPower; |
| + newMask = (unsigned long)newSize - 1; |
| |
| /* Detect and prevent integer overflow */ |
| if (newSize > (size_t)(-1) / sizeof(NAMED *)) { |
| return NULL; |
| } |
| |
| - size_t tsize = newSize * sizeof(NAMED *); |
| - NAMED **newV = table->mem->malloc_fcn(tsize); |
| + tsize = newSize * sizeof(NAMED *); |
| + newV = table->mem->malloc_fcn(tsize); |
| if (! newV) |
| return NULL; |
| memset(newV, 0, tsize); |
| @@ -7489,6 +7516,10 @@ |
| DTD *const dtd = parser->m_dtd; /* save one level of indirection */ |
| XML_Content *ret; |
| XML_Char *str; /* the current string writing location */ |
| + size_t allocsize; |
| + XML_Content *dest = NULL; |
| + XML_Content *destLimit = NULL; |
| + XML_Content *jobDest = NULL; |
| |
| /* Detect and prevent integer overflow. |
| * The preprocessor guard addresses the "always false" warning |
| @@ -7507,7 +7538,7 @@ |
| return NULL; |
| } |
| |
| - const size_t allocsize = (dtd->scaffCount * sizeof(XML_Content) |
| + allocsize = (dtd->scaffCount * sizeof(XML_Content) |
| + (dtd->contentStringLen * sizeof(XML_Char))); |
| |
| ret = (XML_Content *)MALLOC(parser, allocsize); |
| @@ -7563,9 +7594,9 @@ |
| * |
| * - The algorithm repeats until all target array indices have been processed. |
| */ |
| - XML_Content *dest = ret; /* tree node writing location, moves upwards */ |
| - XML_Content *const destLimit = &ret[dtd->scaffCount]; |
| - XML_Content *jobDest = ret; /* next free writing location in target array */ |
| + dest = ret; /* tree node writing location, moves upwards */ |
| + destLimit = &ret[dtd->scaffCount]; |
| + jobDest = ret; /* next free writing location in target array */ |
| str = (XML_Char *)&ret[dtd->scaffCount]; |
| |
| /* Add the starting job, the root node (index 0) of the source tree */ |
| @@ -7670,13 +7701,14 @@ |
| static void |
| accountingReportStats(XML_Parser originParser, const char *epilog) { |
| const XML_Parser rootParser = getRootParserOf(originParser, NULL); |
| + float amplificationFactor; |
| assert(! rootParser->m_parentParser); |
| |
| if (rootParser->m_accounting.debugLevel < 1) { |
| return; |
| } |
| |
| - const float amplificationFactor |
| + amplificationFactor |
| = accountingGetCurrentAmplification(rootParser); |
| fprintf(stderr, |
| "expat: Accounting(%p): Direct " EXPAT_FMT_ULL( |
| @@ -7696,6 +7728,10 @@ |
| unsigned int levelsAwayFromRootParser, const char *before, |
| const char *after, ptrdiff_t bytesMore, int source_line, |
| enum XML_Account account) { |
| + const char ellipis[] = "[..]"; |
| + const size_t ellipsisLength = sizeof(ellipis) /* because compile-time */ - 1; |
| + const unsigned int contextLength = 10; |
| + const char *walker = NULL; |
| assert(! rootParser->m_parentParser); |
| |
| fprintf(stderr, |
| @@ -7703,12 +7739,8 @@ |
| bytesMore, (account == XML_ACCOUNT_DIRECT) ? "DIR" : "EXP", |
| levelsAwayFromRootParser, source_line, 10, ""); |
| |
| - const char ellipis[] = "[..]"; |
| - const size_t ellipsisLength = sizeof(ellipis) /* because compile-time */ - 1; |
| - const unsigned int contextLength = 10; |
| - |
| /* Note: Performance is of no concern here */ |
| - const char *walker = before; |
| + walker = before; |
| if ((rootParser->m_accounting.debugLevel >= 3) |
| || (after - before) |
| <= (ptrdiff_t)(contextLength + ellipsisLength + contextLength)) { |
| @@ -7732,6 +7764,14 @@ |
| accountingDiffTolerated(XML_Parser originParser, int tok, const char *before, |
| const char *after, int source_line, |
| enum XML_Account account) { |
| + unsigned int levelsAwayFromRootParser; |
| + XML_Parser rootParser; |
| + int isDirect; |
| + ptrdiff_t bytesMore; |
| + XmlBigCount *additionTarget = NULL; |
| + XmlBigCount countBytesOutput; |
| + float amplificationFactor; |
| + XML_Bool tolerated; |
| /* Note: We need to check the token type *first* to be sure that |
| * we can even access variable <after>, safely. |
| * E.g. for XML_TOK_NONE <after> may hold an invalid pointer. */ |
| @@ -7746,16 +7786,15 @@ |
| if (account == XML_ACCOUNT_NONE) |
| return XML_TRUE; /* because these bytes have been accounted for, already */ |
| |
| - unsigned int levelsAwayFromRootParser; |
| - const XML_Parser rootParser |
| + rootParser |
| = getRootParserOf(originParser, &levelsAwayFromRootParser); |
| assert(! rootParser->m_parentParser); |
| |
| - const int isDirect |
| + isDirect |
| = (account == XML_ACCOUNT_DIRECT) && (originParser == rootParser); |
| - const ptrdiff_t bytesMore = after - before; |
| + bytesMore = after - before; |
| |
| - XmlBigCount *const additionTarget |
| + additionTarget |
| = isDirect ? &rootParser->m_accounting.countBytesDirect |
| : &rootParser->m_accounting.countBytesIndirect; |
| |
| @@ -7764,12 +7803,12 @@ |
| return XML_FALSE; |
| *additionTarget += bytesMore; |
| |
| - const XmlBigCount countBytesOutput |
| + countBytesOutput |
| = rootParser->m_accounting.countBytesDirect |
| + rootParser->m_accounting.countBytesIndirect; |
| - const float amplificationFactor |
| + amplificationFactor |
| = accountingGetCurrentAmplification(rootParser); |
| - const XML_Bool tolerated |
| + tolerated |
| = (countBytesOutput < rootParser->m_accounting.activationThresholdBytes) |
| || (amplificationFactor |
| <= rootParser->m_accounting.maximumAmplificationFactor); |
| @@ -7800,14 +7839,15 @@ |
| static void |
| entityTrackingReportStats(XML_Parser rootParser, ENTITY *entity, |
| const char *action, int sourceLine) { |
| + const char *entityName; |
| assert(! rootParser->m_parentParser); |
| if (rootParser->m_entity_stats.debugLevel < 1) |
| return; |
| |
| # if defined(XML_UNICODE) |
| - const char *const entityName = "[..]"; |
| + entityName = "[..]"; |
| # else |
| - const char *const entityName = entity->name; |
| + entityName = entity->name; |
| # endif |
| |
| fprintf( |
| @@ -8387,14 +8427,17 @@ |
| static unsigned long |
| getDebugLevel(const char *variableName, unsigned long defaultDebugLevel) { |
| const char *const valueOrNull = getenv(variableName); |
| + const char *value = NULL; |
| + char *afterValue = NULL; |
| + unsigned long debugLevel; |
| if (valueOrNull == NULL) { |
| return defaultDebugLevel; |
| } |
| - const char *const value = valueOrNull; |
| + value = valueOrNull; |
| |
| errno = 0; |
| - char *afterValue = (char *)value; |
| - unsigned long debugLevel = strtoul(value, &afterValue, 10); |
| + afterValue = (char *)value; |
| + debugLevel = strtoul(value, &afterValue, 10); |
| if ((errno != 0) || (afterValue[0] != '\0')) { |
| errno = 0; |
| return defaultDebugLevel; |
| diff -ru misc/expat-2.5.0/lib/xmltok.c misc/build/expat-2.5.0/lib/xmltok.c |
| --- misc/expat-2.5.0/lib/xmltok.c 2022-10-24 18:32:55.000000000 +0200 |
| +++ misc/build/expat-2.5.0/lib/xmltok.c 2023-02-06 23:22:40.588115938 +0100 |
| @@ -44,14 +44,22 @@ |
| USE OR OTHER DEALINGS IN THE SOFTWARE. |
| */ |
| |
| -#include <expat_config.h> |
| - |
| #include <stddef.h> |
| #include <string.h> /* memcpy */ |
| -#include <stdbool.h> |
| + |
| +#if defined(_MSC_VER) && (_MSC_VER <= 1700) |
| +/* for vs2012/11.0/1700 and earlier Visual Studio compilers */ |
| +# define bool int |
| +# define false 0 |
| +# define true 1 |
| +#else |
| +# include <stdbool.h> |
| +#endif |
| |
| #ifdef _WIN32 |
| # include "winconfig.h" |
| +#else |
| +# include <expat_config.h> |
| #endif |
| |
| #include "expat_external.h" |
| diff -ru misc/expat-2.5.0/tests/runtests.c misc/build/expat-2.5.0/tests/runtests.c |
| --- misc/expat-2.5.0/tests/runtests.c 2022-10-25 17:09:08.000000000 +0200 |
| +++ misc/build/expat-2.5.0/tests/runtests.c 2023-02-06 23:22:40.592116032 +0100 |
| @@ -40,7 +40,15 @@ |
| USE OR OTHER DEALINGS IN THE SOFTWARE. |
| */ |
| |
| -#include <expat_config.h> |
| +#ifdef _WIN32 |
| +# include "winconfig.h" |
| +#include <float.h> |
| +#ifndef isnan |
| +#define isnan _isnan |
| +#endif |
| +#else |
| +# include <expat_config.h> |
| +#endif /* ndef _WIN32 */ |
| |
| #if defined(NDEBUG) |
| # undef NDEBUG /* because test suite relies on assert(...) at the moment */ |
| @@ -53,11 +61,28 @@ |
| #include <stddef.h> /* ptrdiff_t */ |
| #include <ctype.h> |
| #include <limits.h> |
| -#include <stdint.h> /* intptr_t uint64_t */ |
| + |
| +#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER < 1600) |
| +/* vs2008/9.0 and earlier lack stdint.h; _MSC_VER 1600 is vs2010/10.0 */ |
| +# if defined(_WIN64) |
| +typedef unsigned __int64 uintptr_t; |
| +# else |
| +typedef unsigned __int32 uintptr_t; |
| +# endif |
| +#else |
| +# include <stdint.h> /* uintptr_t */ |
| +#endif |
| |
| #if ! defined(__cplusplus) |
| +#if defined(_MSC_VER) && (_MSC_VER <= 1700) |
| +/* for vs2012/11.0/1700 and earlier Visual Studio compilers */ |
| +# define bool int |
| +# define false 0 |
| +# define true 1 |
| +#else |
| # include <stdbool.h> |
| #endif |
| +#endif |
| |
| #include "expat.h" |
| #include "chardata.h" |
| @@ -2666,8 +2691,8 @@ |
| static void XMLCALL |
| element_decl_check_model(void *userData, const XML_Char *name, |
| XML_Content *model) { |
| - UNUSED_P(userData); |
| uint32_t errorFlags = 0; |
| + UNUSED_P(userData); |
| |
| /* Expected model array structure is this: |
| * [0] (type 6, quant 0) |
| @@ -3926,10 +3951,9 @@ |
| #if defined(XML_CONTEXT_BYTES) |
| START_TEST(test_get_buffer_3_overflow) { |
| XML_Parser parser = XML_ParserCreate(NULL); |
| - assert(parser != NULL); |
| - |
| - const char *const text = "\n"; |
| + const char *text = "\n"; |
| const int expectedKeepValue = (int)strlen(text); |
| + assert(parser != NULL); |
| |
| // After this call, variable "keep" in XML_GetBuffer will |
| // have value expectedKeepValue |
| @@ -4992,8 +5016,8 @@ |
| |
| static void XMLCALL |
| suspending_comment_handler(void *userData, const XML_Char *data) { |
| - UNUSED_P(data); |
| XML_Parser parser = (XML_Parser)userData; |
| + UNUSED_P(data); |
| XML_StopParser(parser, XML_TRUE); |
| } |
| |
| @@ -6210,13 +6234,16 @@ |
| for (; j < sizeof(atNameStart) / sizeof(atNameStart[0]); j++) { |
| const bool expectedSuccess |
| = atNameStart[j] ? cases[i].goodNameStart : cases[i].goodName; |
| + XML_Parser parser; |
| + enum XML_Status status; |
| + bool success; |
| sprintf(doc, "<%s%s><!--", atNameStart[j] ? "" : "a", cases[i].tagName); |
| - XML_Parser parser = XML_ParserCreate(NULL); |
| + parser = XML_ParserCreate(NULL); |
| |
| - const enum XML_Status status |
| + status |
| = XML_Parse(parser, doc, (int)strlen(doc), /*isFinal=*/XML_FALSE); |
| |
| - bool success = true; |
| + success = true; |
| if ((status == XML_STATUS_OK) != expectedSuccess) { |
| success = false; |
| } |
| @@ -6812,13 +6839,14 @@ |
| CharData storage; |
| XML_Parser parser = XML_ParserCreate(NULL); |
| ParserPlusStorage parserPlusStorage = {parser, &storage}; |
| - |
| + enum XML_Status status; |
| + |
| CharData_Init(&storage); |
| XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS); |
| XML_SetCommentHandler(parser, accumulate_and_suspend_comment_handler); |
| XML_SetUserData(parser, &parserPlusStorage); |
| |
| - enum XML_Status status = XML_Parse(parser, text, (int)strlen(text), XML_TRUE); |
| + status = XML_Parse(parser, text, (int)strlen(text), XML_TRUE); |
| while (status == XML_STATUS_SUSPENDED) { |
| status = XML_ResumeParser(parser); |
| } |
| @@ -10214,6 +10242,8 @@ |
| const XML_Char *base, |
| const XML_Char *systemId, |
| const XML_Char *publicId) { |
| + const XML_Char *encodingName = XCS("UTF-8"); // needs something non-NULL |
| + XML_Parser ext_parser; |
| UNUSED_P(base); |
| UNUSED_P(systemId); |
| UNUSED_P(publicId); |
| @@ -10226,8 +10256,7 @@ |
| // &(parser->m_mem));" in function parserInit. |
| allocation_count = 3; |
| |
| - const XML_Char *const encodingName = XCS("UTF-8"); // needs something non-NULL |
| - const XML_Parser ext_parser |
| + ext_parser |
| = XML_ExternalEntityParserCreate(parser, context, encodingName); |
| if (ext_parser != NULL) |
| fail( |
| @@ -11718,14 +11747,17 @@ |
| const XML_Char *base, |
| const XML_Char *systemId, |
| const XML_Char *publicId) { |
| - UNUSED_P(context); |
| - UNUSED_P(base); |
| - UNUSED_P(publicId); |
| - |
| const struct AccountingTestCase *const testCase |
| = (const struct AccountingTestCase *)XML_GetUserData(parser); |
| |
| const char *externalText = NULL; |
| + XML_Parser entParser; |
| + XmlParseFunction xmlParseFunction; |
| + enum XML_Status status; |
| + UNUSED_P(context); |
| + UNUSED_P(base); |
| + UNUSED_P(publicId); |
| + |
| if (xcstrcmp(systemId, XCS("first.ent")) == 0) { |
| externalText = testCase->firstExternalText; |
| } else if (xcstrcmp(systemId, XCS("second.ent")) == 0) { |
| @@ -11735,13 +11767,13 @@ |
| } |
| assert(externalText); |
| |
| - XML_Parser entParser = XML_ExternalEntityParserCreate(parser, context, 0); |
| + entParser = XML_ExternalEntityParserCreate(parser, context, 0); |
| assert(entParser); |
| |
| - const XmlParseFunction xmlParseFunction |
| + xmlParseFunction |
| = testCase->singleBytesWanted ? _XML_Parse_SINGLE_BYTES : XML_Parse; |
| |
| - const enum XML_Status status = xmlParseFunction( |
| + status = xmlParseFunction( |
| entParser, externalText, (int)strlen(externalText), XML_TRUE); |
| |
| XML_ParserFree(entParser); |
| @@ -11951,6 +11983,10 @@ |
| + cases[u].expectedCountBytesIndirectExtra; |
| |
| XML_Parser parser = XML_ParserCreate(NULL); |
| + XmlParseFunction xmlParseFunction; |
| + enum XML_Status status; |
| + unsigned long long actualCountBytesDirect; |
| + unsigned long long actualCountBytesIndirect; |
| XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS); |
| if (cases[u].firstExternalText) { |
| XML_SetExternalEntityRefHandler(parser, |
| @@ -11959,19 +11995,19 @@ |
| cases[u].singleBytesWanted = singleBytesWanted; |
| } |
| |
| - const XmlParseFunction xmlParseFunction |
| + xmlParseFunction |
| = singleBytesWanted ? _XML_Parse_SINGLE_BYTES : XML_Parse; |
| |
| - enum XML_Status status |
| + status |
| = xmlParseFunction(parser, cases[u].primaryText, |
| (int)strlen(cases[u].primaryText), XML_TRUE); |
| if (status != XML_STATUS_OK) { |
| _xml_failure(parser, __FILE__, __LINE__); |
| } |
| |
| - const unsigned long long actualCountBytesDirect |
| + actualCountBytesDirect |
| = testingAccountingGetCountBytesDirect(parser); |
| - const unsigned long long actualCountBytesIndirect |
| + actualCountBytesIndirect |
| = testingAccountingGetCountBytesIndirect(parser); |
| |
| XML_ParserFree(parser); |