[dpdk-dev] examples/ip_pipipeline: fix resource leak
Checks
Commit Message
Close tap device fd before returning upon failures.
Coverity issue: 272576
Fixes: 2f74ae28e2 ("examples/ip_pipeline: add tap object")
CC: jasvinder.singh@intel.com
Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
---
examples/ip_pipeline/tap.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
Comments
> -----Original Message-----
> From: Pattan, Reshma
> Sent: Wednesday, April 18, 2018 5:58 PM
> To: dev@dpdk.org
> Cc: Singh, Jasvinder <jasvinder.singh@intel.com>; Pattan, Reshma
> <reshma.pattan@intel.com>
> Subject: [PATCH] examples/ip_pipipeline: fix resource leak
>
> Close tap device fd before returning upon failures.
>
> Coverity issue: 272576
> Fixes: 2f74ae28e2 ("examples/ip_pipeline: add tap object")
> CC: jasvinder.singh@intel.com
>
> Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> ---
> examples/ip_pipeline/tap.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/examples/ip_pipeline/tap.c b/examples/ip_pipeline/tap.c index
> 5b3403218..a0f60867f 100644
> --- a/examples/ip_pipeline/tap.c
> +++ b/examples/ip_pipeline/tap.c
> @@ -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;
> --
> 2.14.3
Reviewed-by: Jasvinder Singh <jasvinder.singh@intel.com>
@@ -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;