From: Thomas Jarosch Date: Mon, 3 Oct 2011 05:24:32 +0000 (+0000) Subject: Fix file descriptor leak in do_tunnels_list() X-Git-Tag: v3.0.0~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=297452a1c24f1fbbdc41e220422aa1fb7b4dccf0;p=thirdparty%2Fiproute2.git Fix file descriptor leak in do_tunnels_list() Detected by cppcheck. Signed-off-by: Thomas Jarosch --- diff --git a/ip/iptunnel.c b/ip/iptunnel.c index f038f0a6a..3d41a274c 100644 --- a/ip/iptunnel.c +++ b/ip/iptunnel.c @@ -411,6 +411,7 @@ static int do_tunnels_list(struct ip_tunnel_parm *p) if (!fgets(buf, sizeof(buf), fp) || !fgets(buf, sizeof(buf), fp)) { fprintf(stderr, "/proc/net/dev read error\n"); + fclose(fp); return -1; } @@ -421,6 +422,7 @@ static int do_tunnels_list(struct ip_tunnel_parm *p) if ((ptr = strchr(buf, ':')) == NULL || (*ptr++ = 0, sscanf(buf, "%s", name) != 1)) { fprintf(stderr, "Wrong format of /proc/net/dev. Sorry.\n"); + fclose(fp); return -1; } if (sscanf(ptr, "%ld%ld%ld%ld%ld%ld%ld%*d%ld%ld%ld%ld%ld%ld%ld", @@ -462,6 +464,7 @@ static int do_tunnels_list(struct ip_tunnel_parm *p) } printf("\n"); } + fclose(fp); return 0; }