[master] 7b0505f Plug memleak on error

Federico G. Schwindt fgsch at lodoss.net
Fri Aug 18 13:02:06 CEST 2017


commit 7b0505fc11fac107ca0ab08724b6ab8a74eda791
Author: Federico G. Schwindt <fgsch at lodoss.net>
Date:   Fri Aug 18 02:56:01 2017 +0100

    Plug memleak on error

diff --git a/lib/libvarnishapi/vjsn.c b/lib/libvarnishapi/vjsn.c
index c4d2254..1ad4fec 100644
--- a/lib/libvarnishapi/vjsn.c
+++ b/lib/libvarnishapi/vjsn.c
@@ -266,8 +266,11 @@ vjsn_object(struct vjsn *js)
 			vjsn_skip_ws(js);
 			VJSN_EXPECT(js, ':', jsv);
 			jsve = vjsn_value(js);
-			if (js->err != NULL)
+			if (js->err != NULL) {
+				if (jsve != NULL)
+					vjsn_val_delete(jsve);
 				return (jsv);
+			}
 			CHECK_OBJ_NOTNULL(jsve, VJSN_VAL_MAGIC);
 			jsve->name = s;
 			VTAILQ_INSERT_TAIL(&jsv->children, jsve, list);
@@ -295,8 +298,11 @@ vjsn_array(struct vjsn *js)
 	if (*js->ptr != ']') {
 		while (1) {
 			jsve = vjsn_value(js);
-			if (js->err != NULL)
+			if (js->err != NULL) {
+				if (jsve != NULL)
+					vjsn_val_delete(jsve);
 				return (jsv);
+			}
 			CHECK_OBJ_NOTNULL(jsve, VJSN_VAL_MAGIC);
 			VTAILQ_INSERT_TAIL(&jsv->children, jsve, list);
 			vjsn_skip_ws(js);



More information about the varnish-commit mailing list