discover: Release process resources on error
authorSamuel Mendoza-Jonas <sam.mj@au1.ibm.com>
Fri, 18 Dec 2015 03:00:49 +0000 (14:00 +1100)
committerSam Mendoza-Jonas <sam@mendozajonas.com>
Tue, 9 Feb 2016 02:39:34 +0000 (13:39 +1100)
Fixes Coverity defect #30472

Signed-off-by: Sam Mendoza-Jonas <sam@mendozajonas.com>
discover/device-handler.c

index 77f9e3c59b9bb761d02a668f26ad130187f516d9..9de2a1901ea16b41f1f78513bec59cfbfc302f87 100644 (file)
@@ -1099,10 +1099,12 @@ static char *device_from_addr(void *ctx, struct pb_url *url)
 
        rc = process_run_sync(p);
 
 
        rc = process_run_sync(p);
 
-       if (rc) {
+       if (rc || p->exit_status) {
                /* ip has complained for some reason; most likely
                 * there is no route to the host - bail out */
                /* ip has complained for some reason; most likely
                 * there is no route to the host - bail out */
-               pb_debug("%s: No route to %s\n",__func__,url->host);
+               pb_debug("%s: `ip` returns non-zero exit status\n", __func__);
+               pb_debug("ip buf: %s\n", p->stdout_buf);
+               process_release(p);
                return NULL;
        }
 
                return NULL;
        }