]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
lldp: fix memleak
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 2 Mar 2016 20:29:36 +0000 (15:29 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sat, 5 Mar 2016 02:45:45 +0000 (21:45 -0500)
in_addr_to_string returned 0, which was treated as error by the calling
code, which expects 1 on success.

CID #1351757, #1351758.

src/libsystemd-network/lldp-neighbor.c

index c61941cd70e9c93b4e2638baa5377b88a0c4ac05..190c9baeced8c8953fc7ccbc24364c22358066e5 100644 (file)
@@ -446,7 +446,7 @@ static int format_mac_address(const void *data, size_t sz, char **ret) {
 
 static int format_network_address(const void *data, size_t sz, char **ret) {
         union in_addr_union a;
-        int family;
+        int family, r;
 
         if (sz == 6 && ((uint8_t*) data)[1] == 1) {
                 memcpy(&a.in, (uint8_t*) data + 2, sizeof(a.in));
@@ -457,7 +457,10 @@ static int format_network_address(const void *data, size_t sz, char **ret) {
         } else
                 return 0;
 
-        return in_addr_to_string(family, &a, ret);
+        r = in_addr_to_string(family, &a, ret);
+        if (r < 0)
+                return r;
+        return 1;
 }
 
 _public_ int sd_lldp_neighbor_get_chassis_id_as_string(sd_lldp_neighbor *n, const char **ret) {