mdns: do not close an fd that is not open
authorFerry Huberts <ferry.huberts@pelagic.nl>
Tue, 23 Oct 2012 09:52:23 +0000 (11:52 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Tue, 23 Oct 2012 11:45:14 +0000 (13:45 +0200)
Coverity:
CID 739659 (#1 of 1): Argument cannot be negative (NEGATIVE_RETURNS)
At (7): "capturingSkfd" is passed to a parameter that cannot be negative.
CID 739660 (#1 of 1): Argument cannot be negative (NEGATIVE_RETURNS)
At (8): "electionSkfd" is passed to a parameter that cannot be negative.
CID 739661 (#1 of 1): Argument cannot be negative (NEGATIVE_RETURNS)
At (9): "helloSkfd" is passed to a parameter that cannot be negative.

CID 739656 (#6 of 14): Argument cannot be negative (NEGATIVE_RETURNS)
At (7): "capturingSkfd" is passed to a parameter that cannot be negative.
CID 739656 (#9 of 14): Argument cannot be negative (NEGATIVE_RETURNS)
At (7): "electionSkfd" is passed to a parameter that cannot be negative.
CID 739656 (#10 of 14): Argument cannot be negative (NEGATIVE_RETURNS)
At (7): "helloSkfd" is passed to a parameter that cannot be negative.

Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
lib/mdns/src/NetworkInterfaces.c

index e09300b..d6ac280 100644 (file)
@@ -464,9 +464,15 @@ CreateInterface(const char *ifName, struct interface *olsrIntf)
     electionSkfd = CreateRouterElectionSocket(ifName);
     helloSkfd = CreateHelloSocket(ifName);
     if (capturingSkfd < 0 || electionSkfd < 0 || helloSkfd < 0) {
-      close(capturingSkfd);
-      close(electionSkfd);
-      close(helloSkfd);
+      if (capturingSkfd >= 0) {
+        close(capturingSkfd);
+      }
+      if (electionSkfd >= 0) {
+        close(electionSkfd);
+      }
+      if (helloSkfd >= 0) {
+        close(helloSkfd);
+      }
       free(newIf);
       return 0;
     }
@@ -484,9 +490,15 @@ CreateInterface(const char *ifName, struct interface *olsrIntf)
   ifr.ifr_name[IFNAMSIZ - 1] = '\0';    /* Ensures null termination */
   if (ioctl(ioctlSkfd, SIOCGIFHWADDR, &ifr) < 0) {
     BmfPError("ioctl(SIOCGIFHWADDR) error for interface \"%s\"", ifName);
-    close(capturingSkfd);
-    close(electionSkfd);
-    close(helloSkfd);
+    if (capturingSkfd >= 0) {
+      close(capturingSkfd);
+    }
+    if (electionSkfd >= 0) {
+      close(electionSkfd);
+    }
+    if (helloSkfd >= 0) {
+      close(helloSkfd);
+    }
     free(newIf);
     return 0;
   }