blob: f1e57ab91fbf59b26ae09030ff8f638d213bfeeb [file] [log] [blame]
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);