examples/ip_pipeline: fix leak on tap creation failure
authorReshma Pattan <reshma.pattan@intel.com>
Wed, 18 Apr 2018 16:58:09 +0000 (17:58 +0100)
committerCristian Dumitrescu <cristian.dumitrescu@intel.com>
Tue, 8 May 2018 11:09:20 +0000 (13:09 +0200)
Close tap device fd before returning upon failures.

Coverity issue: 272576
Fixes: 2f74ae28e2 ("examples/ip_pipeline: add tap object")

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Reviewed-by: Jasvinder Singh <jasvinder.singh@intel.com>
examples/ip_pipeline/tap.c

index 5b34032..a0f6086 100644 (file)
@@ -76,14 +76,17 @@ tap_create(const char *name)
        snprintf(ifr.ifr_name, IFNAMSIZ, "%s", name);
 
        status = ioctl(fd, TUNSETIFF, (void *) &ifr);
-       if (status < 0)
+       if (status < 0) {
+               close(fd);
                return NULL;
+       }
 
        /* Node allocation */
        tap = calloc(1, sizeof(struct tap));
-       if (tap == NULL)
+       if (tap == NULL) {
+               close(fd);
                return NULL;
-
+       }
        /* Node fill in */
        strncpy(tap->name, name, sizeof(tap->name));
        tap->fd = fd;