]> xenbits.xensource.com Git - libvirt.git/commitdiff
nss: Don't leak memory on parse error
authorMichal Privoznik <mprivozn@redhat.com>
Fri, 9 Aug 2019 08:37:05 +0000 (10:37 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 9 Aug 2019 10:17:19 +0000 (12:17 +0200)
If yajl_parse() fails, we try to print an error message. For
that, yajl_get_error() is used. However, its documentation say
that caller is also responsible for freeing the memory it
allocates by using yajl_free_error().

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
tools/nss/libvirt_nss_leases.c
tools/nss/libvirt_nss_macs.c

index 577b5a2fd12e817cb4314015c4b8ba04cacb267f..977e3415f704feaf1af894aaa978c24464d9a9cb 100644 (file)
@@ -399,9 +399,10 @@ findLeases(const char *file,
 
         if (yajl_parse(parser, (const unsigned char *)line, rv)  !=
             yajl_status_ok) {
-            ERROR("Parse failed %s",
-                  yajl_get_error(parser, 1,
-                                 (const unsigned char*)line, rv));
+            unsigned char *err = yajl_get_error(parser, 1,
+                                                (const unsigned char*)line, rv);
+            ERROR("Parse failed %s", (const char *) err);
+            yajl_free_error(parser, err);
             goto cleanup;
         }
     }
index ef14ef0a24217a5f367cde37e1e31f12811d1a0b..05d096a348057ef8c51671e379dbbd3e3d9d0860 100644 (file)
@@ -252,9 +252,10 @@ findMACs(const char *file,
 
         if (yajl_parse(parser, (const unsigned char *)line, rv)  !=
             yajl_status_ok) {
-            ERROR("Parse failed %s",
-                  yajl_get_error(parser, 1,
-                                 (const unsigned char*)line, rv));
+            unsigned char *err = yajl_get_error(parser, 1,
+                                                (const unsigned char*)line, rv);
+            ERROR("Parse failed %s", (const char *) err);
+            yajl_free_error(parser, err);
             goto cleanup;
         }
     }