@@ -238,15 +238,17 @@ int xml_process_chunk(modsec_rec *msr, const char *buf, unsigned int size, char
238238
239239 /* Not a first invocation. */
240240 msr_log (msr , 4 , "XML: Continue parsing." );
241- if (msr -> txcfg -> parse_xml_into_args != MSC_XML_ARGS_ONLYARGS ) {
241+ if (msr -> xml -> parsing_ctx != NULL &&
242+ msr -> txcfg -> parse_xml_into_args != MSC_XML_ARGS_ONLYARGS ) {
242243 xmlParseChunk (msr -> xml -> parsing_ctx , buf , size , 0 );
243244 if (msr -> xml -> parsing_ctx -> wellFormed != 1 ) {
244245 * error_msg = apr_psprintf (msr -> mp , "XML: Failed parsing document." );
245246 return -1 ;
246247 }
247248 }
248249
249- if (msr -> txcfg -> parse_xml_into_args != MSC_XML_ARGS_OFF ) {
250+ if (msr -> xml -> parsing_ctx_arg != NULL &&
251+ msr -> txcfg -> parse_xml_into_args != MSC_XML_ARGS_OFF ) {
250252 if (xmlParseChunk (msr -> xml -> parsing_ctx_arg , buf , size , 0 ) != 0 ) {
251253 if (msr -> xml -> xml_error ) {
252254 * error_msg = msr -> xml -> xml_error ;
@@ -276,7 +278,8 @@ int xml_complete(modsec_rec *msr, char **error_msg) {
276278
277279 /* Only if we have a context, meaning we've done some work. */
278280 if (msr -> xml -> parsing_ctx != NULL || msr -> xml -> parsing_ctx_arg != NULL ) {
279- if (msr -> txcfg -> parse_xml_into_args != MSC_XML_ARGS_ONLYARGS ) {
281+ if (msr -> xml -> parsing_ctx != NULL &&
282+ msr -> txcfg -> parse_xml_into_args != MSC_XML_ARGS_ONLYARGS ) {
280283 /* This is how we signalise the end of parsing to libxml. */
281284 xmlParseChunk (msr -> xml -> parsing_ctx , NULL , 0 , 1 );
282285
@@ -295,7 +298,8 @@ int xml_complete(modsec_rec *msr, char **error_msg) {
295298 }
296299 }
297300
298- if (msr -> txcfg -> parse_xml_into_args != MSC_XML_ARGS_OFF ) {
301+ if (msr -> xml -> parsing_ctx_arg != NULL &&
302+ msr -> txcfg -> parse_xml_into_args != MSC_XML_ARGS_OFF ) {
299303 if (xmlParseChunk (msr -> xml -> parsing_ctx_arg , NULL , 0 , 1 ) != 0 ) {
300304 if (msr -> xml -> xml_error ) {
301305 * error_msg = msr -> xml -> xml_error ;
0 commit comments