]> granicus.if.org Git - postgresql/commitdiff
Fix multiple memory leaks in xml_out(). Per report from Matt Magoffin.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 16 Sep 2008 00:49:49 +0000 (00:49 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 16 Sep 2008 00:49:49 +0000 (00:49 +0000)
src/backend/utils/adt/xml.c

index 7a627b7683bedfbc8f7ceb9ac85043efc68a76d1..c5b5e87abca15741de5533e5acdd38aaf8b75157 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.68.2.3 2008/07/03 00:04:34 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.68.2.4 2008/09/16 00:49:49 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -208,7 +208,6 @@ xml_out_internal(xmltype *x, pg_enc target_encoding)
 
 #ifdef USE_LIBXML
        xmlChar    *version;
-       xmlChar    *encoding;
        int                     standalone;
        int                     res_code;
 #endif
@@ -220,7 +219,7 @@ xml_out_internal(xmltype *x, pg_enc target_encoding)
 
 #ifdef USE_LIBXML
        if ((res_code = parse_xml_decl((xmlChar *) str,
-                                                          &len, &version, &encoding, &standalone)) == 0)
+                                                                  &len, &version, NULL, &standalone)) == 0)
        {
                StringInfoData buf;
 
@@ -238,6 +237,10 @@ xml_out_internal(xmltype *x, pg_enc target_encoding)
                }
                appendStringInfoString(&buf, str + len);
 
+               if (version)
+                       xmlFree(version);
+               pfree(str);
+
                return buf.data;
        }