You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by ji...@apache.org on 2017/08/08 10:40:53 UTC

svn commit: r1804389 - /openoffice/branches/AOO414/main/expat/expat-2.2.3.patch

Author: jim
Date: Tue Aug  8 10:40:53 2017
New Revision: 1804389

URL: http://svn.apache.org/viewvc?rev=1804389&view=rev
Log:
revert 1804232 for 4.1.4... still no work. Use ugly but working patch from RC1

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=1804389&r1=1804388&r2=1804389&view=diff
==============================================================================
--- openoffice/branches/AOO414/main/expat/expat-2.2.3.patch (original)
+++ openoffice/branches/AOO414/main/expat/expat-2.2.3.patch Tue Aug  8 10:40:53 2017
@@ -1,6 +1,6 @@
 --- misc/expat-2.2.3/lib/makefile.mk	Wed Aug 20 14:33:55 2008
 +++ misc/build/expat-2.2.3/lib/makefile.mk	Wed Aug 20 14:26:42 2008
-@@ -1 +1,85 @@
+@@ -1 +1,83 @@
 -dummy
 +#**************************************************************
 +#  
@@ -45,23 +45,21 @@
 +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 $(LOADLIBOBJFILE)
++LIB1OBJFILES=$(SLO)$/xmlparse.obj
 +
 +LIB2ARCHIV=$(LB)$/lib$(TARGET)_xmlparse.a
 +LIB2TARGET=$(SLB)$/$(TARGET)_xmlparse.lib
-+LIB2OBJFILES =$(REAL_UNICODE_SLOFILES) $(LOADLIBOBJFILE)
++LIB2OBJFILES =$(REAL_UNICODE_SLOFILES)
 +
 +LIB3ARCHIV=$(LB)$/lib$(TARGET)_xmltok.a
 +LIB3TARGET=$(SLB)$/$(TARGET)_xmltok.lib
@@ -87,3 +85,329 @@
 +.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, <st...@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)