Author: jim Date: Thu Sep 21 20:46:03 2017 New Revision: 1809226 URL: http://svn.apache.org/viewvc?rev=1809226&view=rev Log: Correct backport of expat fix
Modified: openoffice/branches/AOO414/main/expat/expat-2.2.3.patch Modified: openoffice/branches/AOO414/main/expat/expat-2.2.3.patch URL: http://svn.apache.org/viewvc/openoffice/branches/AOO414/main/expat/expat-2.2.3.patch?rev=1809226&r1=1809225&r2=1809226&view=diff ============================================================================== --- openoffice/branches/AOO414/main/expat/expat-2.2.3.patch (original) +++ openoffice/branches/AOO414/main/expat/expat-2.2.3.patch Thu Sep 21 20:46:03 2017 @@ -45,21 +45,23 @@ +CDEFS+=-DHAVE_MEMMOVE -DHAVE_BCOPY +.ENDIF # "$(OS)"=="MACOSX" + -+SLOFILES=$(SLO)$/xmlparse.obj \ -+ $(SLO)$/xmlrole.obj \ -+ $(SLO)$/xmltok.obj -+ +SECOND_BUILD=UNICODE +UNICODE_SLOFILES=$(SLO)$/xmlparse.obj +UNICODECDEFS+=-DXML_UNICODE + ++.IF "$(OS)"=="WNT" ++ LOADLIBOBJFILE=$(SLO)/loadlibrary.obj ++.ELSE ++ LOADLIBOBJFILE= ++.ENDIF ++ +LIB1ARCHIV=$(LB)$/libascii_$(TARGET)_xmlparse.a +LIB1TARGET=$(SLB)$/ascii_$(TARGET)_xmlparse.lib -+LIB1OBJFILES=$(SLO)$/xmlparse.obj ++LIB1OBJFILES=$(SLO)$/xmlparse.obj $(LOADLIBOBJFILE) + +LIB2ARCHIV=$(LB)$/lib$(TARGET)_xmlparse.a +LIB2TARGET=$(SLB)$/$(TARGET)_xmlparse.lib -+LIB2OBJFILES =$(REAL_UNICODE_SLOFILES) ++LIB2OBJFILES =$(REAL_UNICODE_SLOFILES) $(LOADLIBOBJFILE) + +LIB3ARCHIV=$(LB)$/lib$(TARGET)_xmltok.a +LIB3TARGET=$(SLB)$/$(TARGET)_xmltok.lib @@ -91,329 +93,3 @@ +.INCLUDE : set_wntx64.mk +.INCLUDE : target.mk +.INCLUDE : tg_wntx64.mk -diff -ur misc/expat-2.2.3/lib/xmlparse.c misc/build/expat-2.2.3/lib/xmlparse.c ---- misc/expat-2.2.3/lib/xmlparse.c 2017-08-02 09:40:48.000000000 -0400 -+++ misc/build/expat-2.2.3/lib/xmlparse.c 2017-08-04 18:33:34.000000000 -0400 -@@ -1,3 +1,145 @@ -+/*************************************************************************** -+ * _ _ ____ _ -+ * Project ___| | | | _ \| | -+ * / __| | | | |_) | | -+ * | (__| |_| | _ <| |___ -+ * \___|\___/|_| \_\_____| -+ * -+ * Copyright (C) 2016 - 2017, Steve Holme, <steve_ho...@hotmail.com>. -+ * -+ * All rights reserved. -+ * -+ * Permission to use, copy, modify, and distribute this software for any -+ * purpose with or without fee is hereby granted, provided that the above -+ * copyright notice and this permission notice appear in all copies. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF -+ * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH -+ * THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ * -+ * Except as contained in this notice, the name of a copyright holder shall -+ * not be used in advertising or otherwise to promote the sale, use or other -+ * dealings in this Software without prior written authorization of the -+ * copyright holder. -+ * -+ ***************************************************************************/ -+ -+#if defined(_WIN32) -+ -+#include <windows.h> -+#include <tchar.h> -+ -+ -+HMODULE _Expat_LoadLibrary(LPCTSTR filename); -+ -+ -+#if !defined(LOAD_WITH_ALTERED_SEARCH_PATH) -+#define LOAD_WITH_ALTERED_SEARCH_PATH 0x00000008 -+#endif -+ -+#if !defined(LOAD_LIBRARY_SEARCH_SYSTEM32) -+#define LOAD_LIBRARY_SEARCH_SYSTEM32 0x00000800 -+#endif -+ -+/* We use our own typedef here since some headers might lack these */ -+typedef HMODULE (APIENTRY *LOADLIBRARYEX_FN)(LPCTSTR, HANDLE, DWORD); -+ -+/* See function definitions in winbase.h */ -+#ifdef UNICODE -+# ifdef _WIN32_WCE -+# define LOADLIBARYEX L"LoadLibraryExW" -+# else -+# define LOADLIBARYEX "LoadLibraryExW" -+# endif -+#else -+# define LOADLIBARYEX "LoadLibraryExA" -+#endif -+ -+ -+/* -+ * _Expat_LoadLibrary() -+ * -+ * This is used to dynamically load DLLs using the most secure method available -+ * for the version of Windows that we are running on. -+ * -+ * Parameters: -+ * -+ * filename [in] - The filename or full path of the DLL to load. If only the -+ * filename is passed then the DLL will be loaded from the -+ * Windows system directory. -+ * -+ * Returns the handle of the module on success; otherwise NULL. -+ */ -+HMODULE _Expat_LoadLibrary(LPCTSTR filename) -+{ -+ HMODULE hModule = NULL; -+ LOADLIBRARYEX_FN pLoadLibraryEx = NULL; -+ -+ /* Get a handle to kernel32 so we can access it's functions at runtime */ -+ HMODULE hKernel32 = GetModuleHandle(TEXT("kernel32")); -+ if(!hKernel32) -+ return NULL; -+ -+ /* Attempt to find LoadLibraryEx() which is only available on Windows 2000 -+ and above */ -+ pLoadLibraryEx = (LOADLIBRARYEX_FN) GetProcAddress(hKernel32, LOADLIBARYEX); -+ -+ /* Detect if there's already a path in the filename and load the library if -+ there is. Note: Both back slashes and forward slashes have been supported -+ since the earlier days of DOS at an API level although they are not -+ supported by command prompt */ -+ if(_tcspbrk(filename, TEXT("\\/"))) { -+ /** !checksrc! disable BANNEDFUNC 1 **/ -+ hModule = pLoadLibraryEx ? -+ pLoadLibraryEx(filename, NULL, LOAD_WITH_ALTERED_SEARCH_PATH) : -+ LoadLibrary(filename); -+ } -+ /* Detect if KB2533623 is installed, as LOAD_LIBARY_SEARCH_SYSTEM32 is only -+ supported on Windows Vista, Windows Server 2008, Windows 7 and Windows -+ Server 2008 R2 with this patch or natively on Windows 8 and above */ -+ else if(pLoadLibraryEx && GetProcAddress(hKernel32, "AddDllDirectory")) { -+ /* Load the DLL from the Windows system directory */ -+ hModule = pLoadLibraryEx(filename, NULL, LOAD_LIBRARY_SEARCH_SYSTEM32); -+ } -+ else { -+ /* Attempt to get the Windows system path */ -+ UINT systemdirlen = GetSystemDirectory(NULL, 0); -+ if(systemdirlen) { -+ /* Allocate space for the full DLL path (Room for the null terminator -+ is included in systemdirlen) */ -+ size_t filenamelen = _tcslen(filename); -+ TCHAR *path = malloc(sizeof(TCHAR) * (systemdirlen + 1 + filenamelen)); -+ if(path && GetSystemDirectory(path, systemdirlen)) { -+ /* Calculate the full DLL path */ -+ _tcscpy(path + _tcslen(path), TEXT("\\")); -+ _tcscpy(path + _tcslen(path), filename); -+ -+ /* Load the DLL from the Windows system directory */ -+ /** !checksrc! disable BANNEDFUNC 1 **/ -+ hModule = pLoadLibraryEx ? -+ pLoadLibraryEx(path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH) : -+ LoadLibrary(path); -+ -+ } -+ free(path); -+ } -+ } -+ -+ return hModule; -+} -+ -+#else /* defined(_WIN32) */ -+ -+/* ISO C requires a translation unit to contain at least one declaration -+ [-Wempty-translation-unit] */ -+typedef int _TRANSLATION_UNIT_LOAD_LIBRARY_C_NOT_EMTPY; -+ -+#endif /* defined(_WIN32) */ -+ - /* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. - -@@ -314,7 +456,7 @@ - int nDefaultAtts; - int allocDefaultAtts; - DEFAULT_ATTRIBUTE *defaultAtts; --} ELEMENT_TYPE; -+} XMLPARSE_ELEMENT_TYPE; - - typedef struct { - HASH_TABLE generalEntities; -@@ -414,7 +556,7 @@ - addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, - const XML_Char *uri, BINDING **bindingsPtr); - static int --defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, -+defineAttribute(XMLPARSE_ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, - XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser); - static enum XML_Error - storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, -@@ -426,7 +568,7 @@ - getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, - const char *end); - static int --setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *); -+setElementTypePrefix(XML_Parser parser, XMLPARSE_ELEMENT_TYPE *); - static enum XML_Error - storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start, - const char *end); -@@ -487,7 +629,7 @@ - - static int FASTCALL nextScaffoldPart(XML_Parser parser); - static XML_Content * build_model(XML_Parser parser); --static ELEMENT_TYPE * -+static XMLPARSE_ELEMENT_TYPE * - getElementType(XML_Parser parser, const ENCODING *enc, - const char *ptr, const char *end); - -@@ -585,7 +727,7 @@ - const XML_Char *m_declAttributeType; - const XML_Char *m_declNotationName; - const XML_Char *m_declNotationPublicId; -- ELEMENT_TYPE *m_declElementType; -+ XMLPARSE_ELEMENT_TYPE *m_declElementType; - ATTRIBUTE_ID *m_declAttributeId; - XML_Bool m_declAttributeIsCdata; - XML_Bool m_declAttributeIsId; -@@ -843,7 +985,6 @@ - #ifdef _WIN32 - - typedef BOOLEAN (APIENTRY *RTLGENRANDOM_FUNC)(PVOID, ULONG); --HMODULE _Expat_LoadLibrary(LPCTSTR filename); /* see loadlibrary.c */ - - /* Obtain entropy on Windows XP / Windows Server 2003 and later. - * Hint on RtlGenRandom and the following article from libsodium. -@@ -1285,7 +1426,7 @@ - XML_AttlistDeclHandler oldAttlistDeclHandler; - XML_EntityDeclHandler oldEntityDeclHandler; - XML_XmlDeclHandler oldXmlDeclHandler; -- ELEMENT_TYPE * oldDeclElementType; -+ XMLPARSE_ELEMENT_TYPE * oldDeclElementType; - - void *oldUserData; - void *oldHandlerArg; -@@ -3181,7 +3322,7 @@ - BINDING **bindingsPtr) - { - DTD * const dtd = _dtd; /* save one level of indirection */ -- ELEMENT_TYPE *elementType; -+ XMLPARSE_ELEMENT_TYPE *elementType; - int nDefaultAtts; - const XML_Char **appAtts; /* the attribute list for the application */ - int attIndex = 0; -@@ -3194,13 +3335,13 @@ - const XML_Char *localPart; - - /* lookup the element type name */ -- elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str,0); -+ elementType = (XMLPARSE_ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str,0); - if (!elementType) { - const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str); - if (!name) - return XML_ERROR_NO_MEMORY; -- elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, -- sizeof(ELEMENT_TYPE)); -+ elementType = (XMLPARSE_ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, -+ sizeof(XMLPARSE_ELEMENT_TYPE)); - if (!elementType) - return XML_ERROR_NO_MEMORY; - if (ns && !setElementTypePrefix(parser, elementType)) -@@ -5202,7 +5343,7 @@ - quant = XML_CQUANT_PLUS; - elementContent: - if (dtd->in_eldecl) { -- ELEMENT_TYPE *el; -+ XMLPARSE_ELEMENT_TYPE *el; - const XML_Char *name; - int nameLen; - const char *nxt = (quant == XML_CQUANT_NONE -@@ -6010,7 +6151,7 @@ - - - static int --defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, -+defineAttribute(XMLPARSE_ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, - XML_Bool isId, const XML_Char *value, XML_Parser parser) - { - DEFAULT_ATTRIBUTE *att; -@@ -6054,7 +6195,7 @@ - } - - static int --setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType) -+setElementTypePrefix(XML_Parser parser, XMLPARSE_ELEMENT_TYPE *elementType) - { - DTD * const dtd = _dtd; /* save one level of indirection */ - const XML_Char *name; -@@ -6367,7 +6508,7 @@ - HASH_TABLE_ITER iter; - hashTableIterInit(&iter, &(p->elementTypes)); - for (;;) { -- ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); -+ XMLPARSE_ELEMENT_TYPE *e = (XMLPARSE_ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!e) - break; - if (e->allocDefaultAtts != 0) -@@ -6409,7 +6550,7 @@ - HASH_TABLE_ITER iter; - hashTableIterInit(&iter, &(p->elementTypes)); - for (;;) { -- ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); -+ XMLPARSE_ELEMENT_TYPE *e = (XMLPARSE_ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!e) - break; - if (e->allocDefaultAtts != 0) -@@ -6493,16 +6634,16 @@ - - for (;;) { - int i; -- ELEMENT_TYPE *newE; -+ XMLPARSE_ELEMENT_TYPE *newE; - const XML_Char *name; -- const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter); -+ const XMLPARSE_ELEMENT_TYPE *oldE = (XMLPARSE_ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!oldE) - break; - name = poolCopyString(&(newDtd->pool), oldE->name); - if (!name) - return 0; -- newE = (ELEMENT_TYPE *)lookup(oldParser, &(newDtd->elementTypes), name, -- sizeof(ELEMENT_TYPE)); -+ newE = (XMLPARSE_ELEMENT_TYPE *)lookup(oldParser, &(newDtd->elementTypes), name, -+ sizeof(XMLPARSE_ELEMENT_TYPE)); - if (!newE) - return 0; - if (oldE->nDefaultAtts) { -@@ -7166,7 +7307,7 @@ - return ret; - } - --static ELEMENT_TYPE * -+static XMLPARSE_ELEMENT_TYPE * - getElementType(XML_Parser parser, - const ENCODING *enc, - const char *ptr, -@@ -7174,11 +7315,11 @@ - { - DTD * const dtd = _dtd; /* save one level of indirection */ - const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end); -- ELEMENT_TYPE *ret; -+ XMLPARSE_ELEMENT_TYPE *ret; - - if (!name) - return NULL; -- ret = (ELEMENT_TYPE *) lookup(parser, &dtd->elementTypes, name, sizeof(ELEMENT_TYPE)); -+ ret = (XMLPARSE_ELEMENT_TYPE *) lookup(parser, &dtd->elementTypes, name, sizeof(XMLPARSE_ELEMENT_TYPE)); - if (!ret) - return NULL; - if (ret->name != name)