Fix memory leak in outfuncs.c pointed out by Coverity.
authorTatsuo Ishii <ishii@sraoss.co.jp>
Wed, 22 May 2019 08:01:47 +0000 (17:01 +0900)
committerTatsuo Ishii <ishii@sraoss.co.jp>
Wed, 22 May 2019 08:05:51 +0000 (17:05 +0900)
src/parser/outfuncs.c

index 92d28023d677295e3a14a8361e3edb93c64150be..64ed8a71ca78626d73e46bf0bce779d473c2f9d7 100644 (file)
@@ -1472,6 +1472,7 @@ static void
 _outValue(String *str, Value *value)
 {
        char buf[16];
+       char            *p;
 
        switch (value->type)
        {
@@ -1486,7 +1487,9 @@ _outValue(String *str, Value *value)
 
                case T_String:
                        string_append_char(str, "'");
-                       string_append_char(str, escape_string(value->val.str));
+                       p = escape_string(value->val.str);
+                       string_append_char(str, p);
+                       pfree(p);
                        string_append_char(str, "'");
                        break;
 
@@ -1548,6 +1551,7 @@ static void
 _outAConst(String *str, A_Const *node)
 {
        char buf[16];
+       char            *p;
 
        switch (node->val.type)
        {
@@ -1562,7 +1566,9 @@ _outAConst(String *str, A_Const *node)
 
                case T_String:
                        string_append_char(str, "'");
-                       string_append_char(str, escape_string(node->val.val.str));
+                       p = escape_string(node->val.val.str);
+                       string_append_char(str, p);
+                       pfree(p);
                        string_append_char(str, "'");
                        break;
 
@@ -3560,6 +3566,7 @@ static void
 _outDropStmt(String *str, DropStmt *node)
 {
        List *objname;
+       char            *p;
 
        string_append_char(str, "DROP ");
        switch (node->removeType)
@@ -3673,7 +3680,9 @@ _outDropStmt(String *str, DropStmt *node)
                        string_append_char(str, strVal(llast(objname)));
                        string_append_char(str, " USING ");
                        string_append_char(str, "'");
-                       string_append_char(str, escape_string(NameListToString(list_truncate(list_copy(objname), list_length(objname) - 1))));
+                       p = escape_string(NameListToString(list_truncate(list_copy(objname), list_length(objname) - 1)));
+                       string_append_char(str, p);
+                       pfree(p);
                        string_append_char(str, "'");
 
                        break;