diff --git a/parser/expat/expat_config.h b/parser/expat/expat_config.h index d302adceb92f..be284197f041 100644 --- a/parser/expat/expat_config.h +++ b/parser/expat/expat_config.h @@ -17,7 +17,10 @@ #define XMLCALL #define XML_STATIC -#define XMLIMPORT +#ifdef HAVE_VISIBILITY_HIDDEN_ATTRIBUTE +# undef XMLIMPORT +# define XMLIMPORT __attribute__((visibility("hidden"))) +#endif #define XML_UNICODE typedef char XML_LChar; @@ -37,112 +40,4 @@ typedef uint16_t XML_Char; #define XML_DTD #define XML_NS -/* avoid conflicts with system version of libexpat */ - -/* expat.h */ -#define XML_SetElementDeclHandler MOZ_XML_SetElementDeclHandler -#define XML_SetAttlistDeclHandler MOZ_XML_SetAttlistDeclHandler -#define XML_SetXmlDeclHandler MOZ_XML_SetXmlDeclHandler -#define XML_ParserCreate MOZ_XML_ParserCreate -#define XML_ParserCreateNS MOZ_XML_ParserCreateNS -#define XML_ParserCreate_MM MOZ_XML_ParserCreate_MM -#define XML_ParserReset MOZ_XML_ParserReset -#define XML_SetEntityDeclHandler MOZ_XML_SetEntityDeclHandler -#define XML_SetElementHandler MOZ_XML_SetElementHandler -#define XML_SetStartElementHandler MOZ_XML_SetStartElementHandler -#define XML_SetEndElementHandler MOZ_XML_SetEndElementHandler -#define XML_SetCharacterDataHandler MOZ_XML_SetCharacterDataHandler -#ifndef __VMS -#define XML_SetProcessingInstructionHandler MOZ_XML_SetProcessingInstructionHandler -#else -#define XML_SetProcessingInstrHandler MOZ_XML_SetProcessingInstrHandler -#endif -#define XML_SetCommentHandler MOZ_XML_SetCommentHandler -#define XML_SetCdataSectionHandler MOZ_XML_SetCdataSectionHandler -#define XML_SetStartCdataSectionHandler MOZ_XML_SetStartCdataSectionHandler -#define XML_SetEndCdataSectionHandler MOZ_XML_SetEndCdataSectionHandler -#define XML_SetDefaultHandler MOZ_XML_SetDefaultHandler -#define XML_SetDefaultHandlerExpand MOZ_XML_SetDefaultHandlerExpand -#define XML_SetDoctypeDeclHandler MOZ_XML_SetDoctypeDeclHandler -#define XML_SetStartDoctypeDeclHandler MOZ_XML_SetStartDoctypeDeclHandler -#define XML_SetEndDoctypeDeclHandler MOZ_XML_SetEndDoctypeDeclHandler -#ifndef __VMS -#define XML_SetUnparsedEntityDeclHandler MOZ_XML_SetUnparsedEntityDeclHandler -#else -#define XML_SetUnparsedEntDeclHandler MOZ_XML_SetUnparsedEntDeclHandler -#endif -#define XML_SetNotationDeclHandler MOZ_XML_SetNotationDeclHandler -#define XML_SetNamespaceDeclHandler MOZ_XML_SetNamespaceDeclHandler -#ifndef __VMS -#define XML_SetStartNamespaceDeclHandler MOZ_XML_SetStartNamespaceDeclHandler -#else -#define XML_SetStartNamespcDeclHandler MOZ_XML_SetStartNamespcDeclHandler -#endif -#define XML_SetEndNamespaceDeclHandler MOZ_XML_SetEndNamespaceDeclHandler -#define XML_SetNotStandaloneHandler MOZ_XML_SetNotStandaloneHandler -#define XML_SetExternalEntityRefHandler MOZ_XML_SetExternalEntityRefHandler -#ifndef __VMS -#define XML_SetExternalEntityRefHandlerArg MOZ_XML_SetExternalEntityRefHandlerArg -#else -#define XML_SetExternalEntRefHandlerArg MOZ_XML_SetExternalEntRefHandlerArg -#endif -#define XML_SetSkippedEntityHandler MOZ_XML_SetSkippedEntityHandler -#define XML_SetUnknownEncodingHandler MOZ_XML_SetUnknownEncodingHandler -#define XML_DefaultCurrent MOZ_XML_DefaultCurrent -#define XML_SetReturnNSTriplet MOZ_XML_SetReturnNSTriplet -#define XML_SetUserData MOZ_XML_SetUserData -#define XML_SetEncoding MOZ_XML_SetEncoding -#define XML_UseParserAsHandlerArg MOZ_XML_UseParserAsHandlerArg -#define XML_UseForeignDTD MOZ_XML_UseForeignDTD -#define XML_SetBase MOZ_XML_SetBase -#define XML_GetBase MOZ_XML_GetBase -#define XML_GetSpecifiedAttributeCount MOZ_XML_GetSpecifiedAttributeCount -#define XML_GetIdAttributeIndex MOZ_XML_GetIdAttributeIndex -#define XML_Parse MOZ_XML_Parse -#define XML_GetBuffer MOZ_XML_GetBuffer -#define XML_ParseBuffer MOZ_XML_ParseBuffer -#define XML_StopParser MOZ_XML_StopParser -#define XML_ResumeParser MOZ_XML_ResumeParser -#define XML_GetParsingStatus MOZ_XML_GetParsingStatus -#define XML_ExternalEntityParserCreate MOZ_XML_ExternalEntityParserCreate -#define XML_SetParamEntityParsing MOZ_XML_SetParamEntityParsing -#define XML_GetErrorCode MOZ_XML_GetErrorCode -#define XML_GetCurrentLineNumber MOZ_XML_GetCurrentLineNumber -#define XML_GetCurrentColumnNumber MOZ_XML_GetCurrentColumnNumber -#define XML_GetCurrentByteIndex MOZ_XML_GetCurrentByteIndex -#define XML_GetCurrentByteCount MOZ_XML_GetCurrentByteCount -#define XML_GetInputContext MOZ_XML_GetInputContext -#define XML_FreeContentModel MOZ_XML_FreeContentModel -#define XML_MemMalloc MOZ_XML_MemMalloc -#define XML_MemRealloc MOZ_XML_MemRealloc -#define XML_MemFree MOZ_XML_MemFree -#define XML_ParserFree MOZ_XML_ParserFree -#define XML_ErrorString MOZ_XML_ErrorString -#define XML_ExpatVersion MOZ_XML_ExpatVersion -#define XML_ExpatVersionInfo MOZ_XML_ExpatVersionInfo -#define XML_GetFeatureList MOZ_XML_GetFeatureList - -/* xmlrole.h */ -#define XmlPrologStateInit MOZ_XmlPrologStateInit -#ifndef __VMS -#define XmlPrologStateInitExternalEntity MOZ_XmlPrologStateInitExternalEntity -#else -#define XmlPrologStateInitExternalEnt MOZ_XmlPrologStateInitExternalEnt -#endif - -/* xmltok.h */ -#define XmlParseXmlDecl MOZ_XmlParseXmlDecl -#define XmlParseXmlDeclNS MOZ_XmlParseXmlDeclNS -#define XmlInitEncoding MOZ_XmlInitEncoding -#define XmlInitEncodingNS MOZ_XmlInitEncodingNS -#define XmlGetUtf8InternalEncoding MOZ_XmlGetUtf8InternalEncoding -#define XmlGetUtf16InternalEncoding MOZ_XmlGetUtf16InternalEncoding -#define XmlGetUtf8InternalEncodingNS MOZ_XmlGetUtf8InternalEncodingNS -#define XmlGetUtf16InternalEncodingNS MOZ_XmlGetUtf16InternalEncodingNS -#define XmlUtf8Encode MOZ_XmlUtf8Encode -#define XmlUtf16Encode MOZ_XmlUtf16Encode -#define XmlSizeOfUnknownEncoding MOZ_XmlSizeOfUnknownEncoding -#define XmlInitUnknownEncoding MOZ_XmlInitUnknownEncoding -#define XmlInitUnknownEncodingNS MOZ_XmlInitUnknownEncodingNS - #endif /* __expat_config_h__ */ diff --git a/parser/expat/lib/expat.h b/parser/expat/lib/expat.h index a3788a6902a9..bb72c6bb12ff 100644 --- a/parser/expat/lib/expat.h +++ b/parser/expat/lib/expat.h @@ -820,13 +820,7 @@ XML_ParseBuffer(XML_Parser parser, int len, int isFinal); When suspended, parsing can be resumed by calling XML_ResumeParser(). */ XMLPARSEAPI(enum XML_Status) -/* BEGIN MOZILLA CHANGE (Bug 1743007 - Convert expat XML_StopParser API to take an int param instead of u8) */ -#if 0 XML_StopParser(XML_Parser parser, XML_Bool resumable); -#else -XML_StopParser(XML_Parser parser, int resumable); -#endif -/* END MOZILLA CHANGE */ /* Resumes parsing after it has been suspended with XML_StopParser(). Must not be called from within a handler call-back. Returns same @@ -1058,16 +1052,6 @@ XML_GetFeatureList(void); #define XML_MINOR_VERSION 2 #define XML_MICRO_VERSION 1 -/* BEGIN MOZILLA CHANGE (Report opening tag of mismatched closing tag) */ -XMLPARSEAPI(const XML_Char*) -MOZ_XML_GetMismatchedTag(XML_Parser parser); -/* END MOZILLA CHANGE */ - -/* BEGIN MOZILLA CHANGE (Report whether the parser is currently expanding an entity) */ -XMLPARSEAPI(XML_Bool) -MOZ_XML_ProcessingEntityValue(XML_Parser parser); -/* END MOZILLA CHANGE */ - #ifdef __cplusplus } #endif diff --git a/parser/expat/lib/moz.build b/parser/expat/lib/moz.build index beaf8459b979..817674ceeede 100644 --- a/parser/expat/lib/moz.build +++ b/parser/expat/lib/moz.build @@ -9,12 +9,11 @@ include("sources.mozbuild") EXPORTS += [ 'expat.h', 'expat_external.h', + 'moz_expat.h', ] if CONFIG["MOZ_WASM_SANDBOXING_EXPAT"]: - # Ideally we'd only build moz_extensions.c, but it's currently included - # from xmltok.c because it uses a lot of its internals. - SOURCES += ['xmltok.c'] + SOURCES += ['moz_xmltok.c'] else: SOURCES += expat_sources diff --git a/parser/expat/lib/moz_expat.h b/parser/expat/lib/moz_expat.h new file mode 100644 index 000000000000..797c4853d23e --- /dev/null +++ b/parser/expat/lib/moz_expat.h @@ -0,0 +1,114 @@ +/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef MOZ_EXPAT_H_ +#define MOZ_EXPAT_H_ + +#include "expat_config.h" +#include "expat.h" +#include "mozilla/Types.h" + +MOZ_BEGIN_EXTERN_C + +void +MOZ_XML_SetXmlDeclHandler(XML_Parser parser, + XML_XmlDeclHandler xmldecl); + +XML_Parser +MOZ_XML_ParserCreate_MM(const XML_Char *encoding, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *namespaceSeparator); + +void +MOZ_XML_SetElementHandler(XML_Parser parser, + XML_StartElementHandler start, + XML_EndElementHandler end); + +void +MOZ_XML_SetCharacterDataHandler(XML_Parser parser, + XML_CharacterDataHandler handler); + +void +MOZ_XML_SetProcessingInstructionHandler(XML_Parser parser, + XML_ProcessingInstructionHandler handler); + +void +MOZ_XML_SetCommentHandler(XML_Parser parser, + XML_CommentHandler handler); + +void +MOZ_XML_SetCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start, + XML_EndCdataSectionHandler end); + +void +MOZ_XML_SetDefaultHandlerExpand(XML_Parser parser, + XML_DefaultHandler handler); + +void +MOZ_XML_SetDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start, + XML_EndDoctypeDeclHandler end); + +void +MOZ_XML_SetExternalEntityRefHandler(XML_Parser parser, + XML_ExternalEntityRefHandler handler); + +void +MOZ_XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); + +enum XML_Status +MOZ_XML_SetBase(XML_Parser parser, const XML_Char *base); + +const XML_Char * +MOZ_XML_GetBase(XML_Parser parser); + +int +MOZ_XML_GetSpecifiedAttributeCount(XML_Parser parser); + +enum XML_Status +MOZ_XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); + +enum XML_Status +MOZ_XML_StopParser(XML_Parser parser, int resumable); + +enum XML_Status +MOZ_XML_ResumeParser(XML_Parser parser); + +XML_Parser +MOZ_XML_ExternalEntityParserCreate(XML_Parser parser, + const XML_Char *context, + const XML_Char *encoding); + +int +MOZ_XML_SetParamEntityParsing(XML_Parser parser, + enum XML_ParamEntityParsing parsing); + +int +MOZ_XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt); + +enum XML_Error +MOZ_XML_GetErrorCode(XML_Parser parser); + +XML_Size MOZ_XML_GetCurrentLineNumber(XML_Parser parser); + +XML_Size MOZ_XML_GetCurrentColumnNumber(XML_Parser parser); + +XML_Index MOZ_XML_GetCurrentByteIndex(XML_Parser parser); + +void +MOZ_XML_ParserFree(XML_Parser parser); + +// Mozilla-only API: Report opening tag of mismatched closing tag. +const XML_Char* +MOZ_XML_GetMismatchedTag(XML_Parser parser); + +// Mozilla-only API: Report whether the parser is currently expanding an entity. +XML_Bool +MOZ_XML_ProcessingEntityValue(XML_Parser parser); + +MOZ_END_EXTERN_C + +#endif /* MOZ_EXPAT_H_ */ diff --git a/parser/expat/lib/moz_xmlparse.c b/parser/expat/lib/moz_xmlparse.c new file mode 100644 index 000000000000..2d75f62a4f52 --- /dev/null +++ b/parser/expat/lib/moz_xmlparse.c @@ -0,0 +1,147 @@ +/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "moz_expat.h" +#include "xmlparse.c" + +void +MOZ_XML_SetXmlDeclHandler(XML_Parser parser, + XML_XmlDeclHandler xmldecl) { + return XML_SetXmlDeclHandler(parser, xmldecl); +} + +XML_Parser +MOZ_XML_ParserCreate_MM(const XML_Char *encoding, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *namespaceSeparator) { + return XML_ParserCreate_MM(encoding, memsuite, namespaceSeparator); +} + +void +MOZ_XML_SetElementHandler(XML_Parser parser, + XML_StartElementHandler start, + XML_EndElementHandler end) { + XML_SetElementHandler(parser, start, end); +} + +void +MOZ_XML_SetCharacterDataHandler(XML_Parser parser, + XML_CharacterDataHandler handler) { + return XML_SetCharacterDataHandler(parser, handler); +} + +void +MOZ_XML_SetProcessingInstructionHandler(XML_Parser parser, + XML_ProcessingInstructionHandler handler) { + return XML_SetProcessingInstructionHandler(parser, handler); +} + +void +MOZ_XML_SetCommentHandler(XML_Parser parser, + XML_CommentHandler handler) { + XML_SetCommentHandler(parser, handler); +} + +void +MOZ_XML_SetCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start, + XML_EndCdataSectionHandler end) { + XML_SetCdataSectionHandler(parser, start, end); +} + +void +MOZ_XML_SetDefaultHandlerExpand(XML_Parser parser, + XML_DefaultHandler handler) { + XML_SetDefaultHandlerExpand(parser, handler); +} + +void +MOZ_XML_SetDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start, + XML_EndDoctypeDeclHandler end) { + XML_SetDoctypeDeclHandler(parser, start, end); +} + +void +MOZ_XML_SetExternalEntityRefHandler(XML_Parser parser, + XML_ExternalEntityRefHandler handler) { + XML_SetExternalEntityRefHandler(parser, handler); +} + +void +MOZ_XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) { + XML_SetReturnNSTriplet(parser, do_nst); +} + +enum XML_Status +MOZ_XML_SetBase(XML_Parser parser, const XML_Char *base) { + return XML_SetBase(parser, base); +} + +const XML_Char * +MOZ_XML_GetBase(XML_Parser parser) { + return XML_GetBase(parser); +} + +int +MOZ_XML_GetSpecifiedAttributeCount(XML_Parser parser) { + return XML_GetSpecifiedAttributeCount(parser); +} + +enum XML_Status +MOZ_XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) { + return XML_Parse(parser, s, len, isFinal); +} + +enum XML_Status +MOZ_XML_StopParser(XML_Parser parser, int resumable) { + return XML_StopParser(parser, resumable); +} + +enum XML_Status +MOZ_XML_ResumeParser(XML_Parser parser) { + return XML_ResumeParser(parser); +} + +XML_Parser +MOZ_XML_ExternalEntityParserCreate(XML_Parser parser, + const XML_Char *context, + const XML_Char *encoding) { + return XML_ExternalEntityParserCreate(parser, context, encoding); +} + +int +MOZ_XML_SetParamEntityParsing(XML_Parser parser, + enum XML_ParamEntityParsing parsing) { + return XML_SetParamEntityParsing(parser, parsing); +} + +int +MOZ_XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt) { + return XML_SetHashSalt(parser, hash_salt); +} + +enum XML_Error +MOZ_XML_GetErrorCode(XML_Parser parser) +{ + return XML_GetErrorCode(parser); +} + +XML_Size MOZ_XML_GetCurrentLineNumber(XML_Parser parser) { + return XML_GetCurrentLineNumber(parser); +} + +XML_Size MOZ_XML_GetCurrentColumnNumber(XML_Parser parser) { + return XML_GetCurrentColumnNumber(parser); +} + +XML_Index MOZ_XML_GetCurrentByteIndex(XML_Parser parser) { + return XML_GetCurrentByteIndex(parser); +} + +void +MOZ_XML_ParserFree(XML_Parser parser) { + return XML_ParserFree(parser); +} diff --git a/parser/expat/lib/moz_extensions.c b/parser/expat/lib/moz_xmltok.c similarity index 99% rename from parser/expat/lib/moz_extensions.c rename to parser/expat/lib/moz_xmltok.c index 37b9e7f71e71..a10ab916d18a 100644 --- a/parser/expat/lib/moz_extensions.c +++ b/parser/expat/lib/moz_xmltok.c @@ -3,6 +3,8 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include "xmltok.c" + #ifdef IS_LITTLE_ENDIAN #define PREFIX(ident) little2_ ## ident diff --git a/parser/expat/lib/sources.mozbuild b/parser/expat/lib/sources.mozbuild index 30d0f76c0ab4..1a8212a080c2 100644 --- a/parser/expat/lib/sources.mozbuild +++ b/parser/expat/lib/sources.mozbuild @@ -5,7 +5,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. expat_sources = [ - 'xmlparse.c', + 'moz_xmlparse.c', 'xmlrole.c', 'xmltok.c', ] diff --git a/parser/expat/lib/xmlparse.c b/parser/expat/lib/xmlparse.c index d4fba8b8580e..89ffd35e5163 100644 --- a/parser/expat/lib/xmlparse.c +++ b/parser/expat/lib/xmlparse.c @@ -2145,13 +2145,7 @@ XML_GetBuffer(XML_Parser parser, int len) } enum XML_Status XMLCALL -/* BEGIN MOZILLA CHANGE (Bug 1743007 - Convert expat XML_StopParser API to take an int param instead of u8) */ -#if 0 XML_StopParser(XML_Parser parser, XML_Bool resumable) -#else -XML_StopParser(XML_Parser parser, int resumable) -#endif -/* END MOZILLA CHANGE */ { if (parser == NULL) return XML_STATUS_ERROR; diff --git a/parser/expat/lib/xmltok.c b/parser/expat/lib/xmltok.c index 76e94fe0fa51..5e52b59b8a6e 100644 --- a/parser/expat/lib/xmltok.c +++ b/parser/expat/lib/xmltok.c @@ -1758,11 +1758,3 @@ XmlInitUnknownEncodingNS(void *mem, } #endif /* XML_NS */ - -/* BEGIN MOZILLA CHANGE (Mozilla extensions for QName checking) */ -#ifdef MOZILLA_CLIENT -#ifndef MOZ_IN_WASM_SANDBOX -#include "moz_extensions.c" -#endif -#endif /* MOZILLA_CLIENT */ -/* END MOZILLA CHANGE */ diff --git a/parser/htmlparser/nsExpatDriver.h b/parser/htmlparser/nsExpatDriver.h index b07ba72b6b46..bd89711a0f82 100644 --- a/parser/htmlparser/nsExpatDriver.h +++ b/parser/htmlparser/nsExpatDriver.h @@ -7,7 +7,7 @@ #define NS_EXPAT_DRIVER__ #include "expat_config.h" -#include "expat.h" +#include "moz_expat.h" #include "nsCOMPtr.h" #include "nsString.h" #include "nsIDTD.h"