]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
neighbor: check return values
authorStephen Hemminger <shemming@brocade.com>
Wed, 14 Jan 2015 02:06:16 +0000 (18:06 -0800)
committerStephen Hemminger <shemming@brocade.com>
Wed, 14 Jan 2015 02:07:23 +0000 (18:07 -0800)
Need to check for invalid address and buffer overrun in ip neigh
command with invalid paramters.

ip/ipneigh.c

index 6be79e1ae7853cce1a59caf7cc73d91220eb203d..eeec7bdd78c5f6e1c71a5ffb94c44b7f0aac7085 100644 (file)
@@ -157,14 +157,19 @@ static int ipneigh_modify(int cmd, int flags, int argc, char **argv)
                exit(-1);
        }
        req.ndm.ndm_family = dst.family;
-       addattr_l(&req.n, sizeof(req), NDA_DST, &dst.data, dst.bytelen);
+       if (addattr_l(&req.n, sizeof(req), NDA_DST, &dst.data, dst.bytelen) < 0)
+               return -1;
 
        if (lla && strcmp(lla, "null")) {
                char llabuf[20];
                int l;
 
                l = ll_addr_a2n(llabuf, sizeof(llabuf), lla);
-               addattr_l(&req.n, sizeof(req), NDA_LLADDR, llabuf, l);
+               if (l < 0)
+                       return -1;
+
+               if (addattr_l(&req.n, sizeof(req), NDA_LLADDR, llabuf, l) < 0)
+                       return -1;
        }
 
        ll_init_map(&rth);