From: Moriyoshi Koizumi Date: Wed, 7 May 2003 20:06:42 +0000 (+0000) Subject: Added missing object initialisation X-Git-Tag: RELEASE_0_9b~66 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=891bd02e104c37adad9b95a7399d5eb8eece61a8;p=php Added missing object initialisation Added missing sanity checks --- diff --git a/ext/xml/compat.c b/ext/xml/compat.c index bfb224df44..304de2c447 100644 --- a/ext/xml/compat.c +++ b/ext/xml/compat.c @@ -86,6 +86,10 @@ _start_element_handler(void *user, const xmlChar *name, const xmlChar **attribut XML_Parser parser = (XML_Parser) user; xmlChar *qualified_name = NULL; + if (parser->h_start_element == NULL) { + return; + } + if (parser->namespace) { _find_namespace_decl(parser, name, attributes); _qualify_namespace(parser, name, &qualified_name); @@ -104,6 +108,10 @@ _end_element_handler(void *user, const xmlChar *name) xmlChar *qualified_name; XML_Parser parser = (XML_Parser) user; + if (parser->h_end_element == NULL) { + return; + } + if (parser->namespace) { xmlChar *nsname; @@ -127,6 +135,10 @@ _cdata_handler(void *user, const xmlChar *cdata, int cdata_len) { XML_Parser parser = (XML_Parser) user; + if (parser->h_cdata == NULL) { + return; + } + parser->h_cdata(parser->user, (const XML_Char *) cdata, cdata_len); } @@ -135,6 +147,10 @@ _pi_handler(void *user, const xmlChar *target, const xmlChar *data) { XML_Parser parser = (XML_Parser) user; + if (parser->h_pi == NULL) { + return; + } + parser->h_pi(parser->user, (const XML_Char *) target, (const XML_Char *) data); } @@ -147,6 +163,10 @@ _unparsed_entity_decl_handler(void *user, { XML_Parser parser = (XML_Parser) user; + if (parser->h_unparsed_entity_decl == NULL) { + return; + } + parser->h_unparsed_entity_decl(parser->user, name, NULL, sys_id, pub_id, notation); } @@ -155,6 +175,10 @@ _notation_decl_handler(void *user, const xmlChar *notation, const xmlChar *sys_i { XML_Parser parser = (XML_Parser) user; + if (parser->h_notation_decl == NULL) { + return; + } + parser->h_notation_decl(parser->user, notation, NULL, sys_id, pub_id); } @@ -163,7 +187,11 @@ _external_entity_ref_handler(void *user, const xmlChar *names, int type, const x { XML_Parser parser = (XML_Parser) user; - parser->h_external_entity_ref(parser->user, names, NULL, sys_id, pub_id); + if (parser->h_external_entity_ref == NULL) { + return; + } + + parser->h_external_entity_ref(parser, names, NULL, sys_id, pub_id); } static xmlSAXHandler @@ -240,6 +268,7 @@ XML_ParserCreate_MM(const XML_Char *encoding, const XML_Memory_Handling_Suite *m xmlMemSetup(memsuite->free_fcn, memsuite->malloc_fcn, memsuite->realloc_fcn, _expat_cpt_intn_strdup); /* WHOCANFIXME: not reentrant ! */ parser = (XML_Parser) memsuite->malloc_fcn(sizeof(struct _XML_Parser)); + memset(parser, 0, sizeof(struct _XML_Parser)); parser->namespace = 0; parser->mem_hdlrs = *memsuite; parser->parser = xmlCreatePushParserCtxt((xmlSAXHandlerPtr) &php_xml_compat_handlers, (void *) parser, NULL, 0, NULL);