Re: BUG #18943: Return value of a function 'xmlBufferCreate' is dereferenced at xpath.c:177 without checking for NUL
От | Jim Jones |
---|---|
Тема | Re: BUG #18943: Return value of a function 'xmlBufferCreate' is dereferenced at xpath.c:177 without checking for NUL |
Дата | |
Msg-id | b35e2342-0f02-4365-94cf-55052ac9bda1@uni-muenster.de обсуждение исходный текст |
Ответ на | Re: BUG #18943: Return value of a function 'xmlBufferCreate' is dereferenced at xpath.c:177 without checking for NUL (Jim Jones <jim.jones@uni-muenster.de>) |
Ответы |
Re: BUG #18943: Return value of a function 'xmlBufferCreate' is dereferenced at xpath.c:177 without checking for NUL
|
Список | pgsql-bugs |
On 05.06.25 11:47, Jim Jones wrote: > Taking a further look at xml.c I am wondering if other functions might > also need some attention in this regard: > > * xmlTextWriterStartElement [3] > * xmlTextWriterWriteAttribute [4] > * xmlTextWriterWriteRaw [5] > * xmlTextWriterEndAttribute [6] > > We're assuming they never fail. Perhaps something like this? > ... > nbytes = xmlTextWriterStartElement(writer, (xmlChar *) xexpr->name); > if (nbytes == -1 || xmlerrcxt->err_occurred) > xml_ereport(xmlerrcxt, ERROR, ERRCODE_OUT_OF_MEMORY, > "could not allocate xmlTextWriterStartElement"); > There is also a further xmlXPathCastNodeToString() call in xml.c at xml_xmlnodetoxmltype() - it calls xmlNodeGetContent() and it can return NULL. xmlChar *str; str = xmlXPathCastNodeToString(cur); PG_TRY(); { /* Here we rely on XML having the same representation as TEXT */ char *escaped = escape_xml((char *) str); result = (xmltype *) cstring_to_text(escaped); pfree(escaped); } PG_FINALLY(); { xmlFree(str); } PG_END_TRY(); The function pgxmlNodeSetToText() also calls xmlXPathCastNodeToString(), but apparently xmlBufferAdd() can handle NULL values.[1] Best regards, Jim 1 - https://github.com/GNOME/libxml2/blob/2b6b3945f2df548b56f2c73c490dda9781f92eb2/buf.c#L989
В списке pgsql-bugs по дате отправления: