diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2019-02-08 13:30:42 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2019-02-08 13:31:04 -0500 |
commit | 0d7d71b64d70b2db51f6339d6fb86fc4e01f7335 (patch) | |
tree | c27f04662845a91c9fdd4521bc5433b863ef4449 | |
parent | b25155021014bfce9627229c8fa5a5f3eeac6ead (diff) | |
download | postgresql-0d7d71b64d70b2db51f6339d6fb86fc4e01f7335.tar.gz postgresql-0d7d71b64d70b2db51f6339d6fb86fc4e01f7335.zip |
Defend against null error message reported by libxml2.
While this isn't really supposed to happen, it can occur in OOM
situations and perhaps others. Instead of crashing, substitute
"(no message provided)".
I didn't worry about localizing this text, since we aren't
localizing anything else here; besides, if we're on the edge of
OOM, it's unlikely gettext() would work.
Report and fix by Sergio Conde Gómez in bug #15624.
Discussion: https://postgr.es/m/15624-4dea54091a2864e6@postgresql.org
-rw-r--r-- | src/backend/utils/adt/xml.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index 7d1d2e019da..2781675f58a 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -1696,7 +1696,10 @@ xml_errorHandler(void *data, xmlErrorPtr error) appendStringInfo(errorBuf, "line %d: ", error->line); if (name != NULL) appendStringInfo(errorBuf, "element %s: ", name); - appendStringInfoString(errorBuf, error->message); + if (error->message != NULL) + appendStringInfoString(errorBuf, error->message); + else + appendStringInfoString(errorBuf, "(no message provided)"); /* * Append context information to errorBuf. |