Skip to content

Commit 776939c

Browse files
committed
Avoid function pointer cast to preserve ability to do CFI
1 parent ff3e767 commit 776939c

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

ext/xml/expat_compat.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747

4848
typedef xmlChar XML_Char;
4949

50+
typedef struct XML_Parser_Struct *XML_Parser;
51+
5052
typedef void (*XML_StartElementHandler)(void *, const XML_Char *, const XML_Char **);
5153
typedef void (*XML_EndElementHandler)(void *, const XML_Char *);
5254
typedef void (*XML_CharacterDataHandler)(void *, const XML_Char *, int);
@@ -55,7 +57,7 @@ typedef void (*XML_CommentHandler)(void *, const XML_Char *);
5557
typedef void (*XML_DefaultHandler)(void *, const XML_Char *, int);
5658
typedef void (*XML_UnparsedEntityDeclHandler)(void *, const XML_Char *, const XML_Char *, const XML_Char *, const XML_Char *, const XML_Char *);
5759
typedef void (*XML_NotationDeclHandler)(void *, const XML_Char *, const XML_Char *, const XML_Char *, const XML_Char *);
58-
typedef int (*XML_ExternalEntityRefHandler)(void *, const XML_Char *, const XML_Char *, const XML_Char *, const XML_Char *);
60+
typedef int (*XML_ExternalEntityRefHandler)(XML_Parser, const XML_Char *, const XML_Char *, const XML_Char *, const XML_Char *);
5961
typedef void (*XML_StartNamespaceDeclHandler)(void *, const XML_Char *, const XML_Char *);
6062
typedef void (*XML_EndNamespaceDeclHandler)(void *, const XML_Char *);
6163

@@ -65,7 +67,7 @@ typedef struct XML_Memory_Handling_Suite {
6567
void (*free_fcn)(void *ptr);
6668
} XML_Memory_Handling_Suite;
6769

68-
typedef struct XML_Parser_Struct {
70+
struct XML_Parser_Struct {
6971
int use_namespace;
7072

7173
xmlChar *_ns_separator;
@@ -84,7 +86,7 @@ typedef struct XML_Parser_Struct {
8486
XML_ExternalEntityRefHandler h_external_entity_ref;
8587
XML_StartNamespaceDeclHandler h_start_ns;
8688
XML_EndNamespaceDeclHandler h_end_ns;
87-
} *XML_Parser;
89+
};
8890

8991
enum XML_Error {
9092
XML_ERROR_NONE,

ext/xml/xml.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -919,10 +919,10 @@ void xml_notationDeclHandler(void *userData, const XML_Char *notationName,
919919
/* }}} */
920920

921921
/* {{{ xml_externalEntityRefHandler() */
922-
int xml_externalEntityRefHandler(XML_Parser parserPtr, const XML_Char *openEntityNames,
922+
int xml_externalEntityRefHandler(XML_Parser userData, const XML_Char *openEntityNames,
923923
const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId)
924924
{
925-
xml_parser *parser = XML_GetUserData(parserPtr);
925+
xml_parser *parser = XML_GetUserData(userData);
926926

927927
if (!parser || !ZEND_FCC_INITIALIZED(parser->externalEntityRefHandler)) {
928928
return 0;
@@ -1296,7 +1296,7 @@ XML_SET_HANDLER_PHP_FUNCTION(xml_set_processing_instruction_handler, processingI
12961296
XML_SET_HANDLER_PHP_FUNCTION(xml_set_default_handler, defaultHandler, XML_SetDefaultHandler, xml_defaultHandler);
12971297
XML_SET_HANDLER_PHP_FUNCTION(xml_set_unparsed_entity_decl_handler, unparsedEntityDeclHandler, XML_SetUnparsedEntityDeclHandler, xml_unparsedEntityDeclHandler);
12981298
XML_SET_HANDLER_PHP_FUNCTION(xml_set_notation_decl_handler, notationDeclHandler, XML_SetNotationDeclHandler, xml_notationDeclHandler);
1299-
XML_SET_HANDLER_PHP_FUNCTION(xml_set_external_entity_ref_handler, externalEntityRefHandler, XML_SetExternalEntityRefHandler, (void *) xml_externalEntityRefHandler);
1299+
XML_SET_HANDLER_PHP_FUNCTION(xml_set_external_entity_ref_handler, externalEntityRefHandler, XML_SetExternalEntityRefHandler, xml_externalEntityRefHandler);
13001300
XML_SET_HANDLER_PHP_FUNCTION(xml_set_start_namespace_decl_handler, startNamespaceDeclHandler, XML_SetStartNamespaceDeclHandler, xml_startNamespaceDeclHandler);
13011301
XML_SET_HANDLER_PHP_FUNCTION(xml_set_end_namespace_decl_handler, endNamespaceDeclHandler, XML_SetEndNamespaceDeclHandler, xml_endNamespaceDeclHandler);
13021302

0 commit comments

Comments
 (0)