Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitff8a120

Browse files
committed
Fix core dump in contrib/xml2's xpath_table() when the input query returns
a NULL value. Per bug #4058.
1 parentc111a72 commitff8a120

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

‎contrib/xml2/xpath.c

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -803,12 +803,10 @@ xpath_table(PG_FUNCTION_ARGS)
803803
xmlXPathCompExprPtrcomppath;
804804

805805
/* Extract the row data as C Strings */
806-
807806
spi_tuple=tuptable->vals[i];
808807
pkey=SPI_getvalue(spi_tuple,spi_tupdesc,1);
809808
xmldoc=SPI_getvalue(spi_tuple,spi_tupdesc,2);
810809

811-
812810
/*
813811
* Clear the values array, so that not-well-formed documents return
814812
* NULL in all columns.
@@ -822,11 +820,14 @@ xpath_table(PG_FUNCTION_ARGS)
822820
values[0]=pkey;
823821

824822
/* Parse the document */
825-
doctree=xmlParseMemory(xmldoc,strlen(xmldoc));
823+
if (xmldoc)
824+
doctree=xmlParseMemory(xmldoc,strlen(xmldoc));
825+
else/* treat NULL as not well-formed */
826+
doctree=NULL;
826827

827828
if (doctree==NULL)
828-
{/* not well-formed, so output all-NULL tuple */
829-
829+
{
830+
/* not well-formed, so output all-NULL tuple */
830831
ret_tuple=BuildTupleFromCStrings(attinmeta,values);
831832
oldcontext=MemoryContextSwitchTo(per_query_ctx);
832833
tuplestore_puttuple(tupstore,ret_tuple);
@@ -918,8 +919,10 @@ xpath_table(PG_FUNCTION_ARGS)
918919

919920
xmlFreeDoc(doctree);
920921

921-
pfree(pkey);
922-
pfree(xmldoc);
922+
if (pkey)
923+
pfree(pkey);
924+
if (xmldoc)
925+
pfree(xmldoc);
923926
}
924927

925928
xmlCleanupParser();

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp