]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
Fix file descriptor leak in do_tunnels_list()
authorThomas Jarosch <thomas.jarosch@intra2net.com>
Mon, 3 Oct 2011 05:24:32 +0000 (05:24 +0000)
committerStephen Hemminger <shemminger@vyatta.com>
Fri, 7 Oct 2011 18:20:22 +0000 (11:20 -0700)
Detected by cppcheck.

Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
ip/iptunnel.c

index f038f0a6a77f9edce6ce64e3de99953db7d27f06..3d41a274cf196bb0d93bd3ece5b3790931be2d9b 100644 (file)
@@ -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;
 }