Changeset: 8f1c6d410860 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8f1c6d410860
Modified Files:
        sql/backends/monet5/sql.c
        sql/backends/monet5/vaults/json/json.c
Branch: nested
Log Message:

Fixes mem leaks in JSON parser


diffs (32 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -5790,6 +5790,8 @@ insert_json_value(JSONterm *jt, sql_subt
        } else {
                msg = createException(SQL, "sql.insert_json_value", 
"jsonv2local failed");
        }
+       if (v->vtype == TYPE_str)
+               GDKfree(v->val.sval);
        return msg;
 }
 
diff --git a/sql/backends/monet5/vaults/json/json.c 
b/sql/backends/monet5/vaults/json/json.c
--- a/sql/backends/monet5/vaults/json/json.c
+++ b/sql/backends/monet5/vaults/json/json.c
@@ -253,7 +253,7 @@ JSONread_json(Client cntxt, MalBlkPtr mb
                        } else
                                BBPreclaim(b);
                } else {
-                       msg = jt->error;
+                       msg = GDKstrdup(jt->error);
                }
                JSONfree(jt);
        } else {
@@ -302,6 +302,7 @@ JSONread_nd_json(Client cntxt, MalBlkPtr
                                                        msg = 
createException(SQL, "json.read_nd_json", "Invalid json object, JSONparse 
failed!");
                                                        break;
                                        }
+                                       JSONfree(jt);
                                        tail = head + skip;
                                        while (tail[0] == '\n') // multiple 
newlines e.g. \n\n
                                                tail ++;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to