summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>2019-06-12 17:38:39 +0200
committerKevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>2019-06-12 18:03:01 +0200
commitde9409762de14b5d909925c5db2e704ec13c754b (patch)
tree59d5e660e070184bf0b8ceedd469872bf1c4baef
parent70f8785b9ee364828e9a0f38275283024df621c2 (diff)
downloadfirewall3-de9409762de14b5d909925c5db2e704ec13c754b.tar.gz
utils: coverity resource leak warning
solve coverity reported resource leak (socket handle) Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
-rw-r--r--utils.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/utils.c b/utils.c
index 7f09787..fc6bbd7 100644
--- a/utils.c
+++ b/utils.c
@@ -944,18 +944,24 @@ bool
fw3_check_loopback_dev(const char *name)
{
struct ifreq ifr;
- int s = socket(AF_LOCAL, SOCK_DGRAM, 0);
+ int s;
bool rv = false;
+ s = socket(AF_LOCAL, SOCK_DGRAM, 0);
+
+ if (s < 0)
+ return false;
+
memset(&ifr, 0, sizeof(ifr));
strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name) - 1);
- if (s < 0 || ioctl(s, SIOCGIFFLAGS, &ifr) < 0)
- goto out;
+ if (ioctl(s, SIOCGIFFLAGS, &ifr) >= 0) {
+ if (ifr.ifr_flags & IFF_LOOPBACK)
+ rv = true;
+ }
+
+ close(s);
- if (ifr.ifr_flags & IFF_LOOPBACK)
- rv = true;
-out:
return rv;
}