Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Dec 2020 00:56:38 +0000 (UTC)
From:      Mark Johnston <markj@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r368471 - stable/12/usr.sbin/rtsold
Message-ID:  <202012090056.0B90ucrt054553@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: markj
Date: Wed Dec  9 00:56:38 2020
New Revision: 368471
URL: https://svnweb.freebsd.org/changeset/base/368471

Log:
  MFC r368278:
  rtsold: Fix bugs reported by Coverity

Modified:
  stable/12/usr.sbin/rtsold/cap_llflags.c
  stable/12/usr.sbin/rtsold/dump.c
  stable/12/usr.sbin/rtsold/if.c
  stable/12/usr.sbin/rtsold/rtsock.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/usr.sbin/rtsold/cap_llflags.c
==============================================================================
--- stable/12/usr.sbin/rtsold/cap_llflags.c	Wed Dec  9 00:56:14 2020	(r368470)
+++ stable/12/usr.sbin/rtsold/cap_llflags.c	Wed Dec  9 00:56:38 2020	(r368471)
@@ -72,9 +72,12 @@ llflags_get(const char *ifname, int *flagsp)
 	if (s < 0)
 		return (-1);
 
-	if (getifaddrs(&ifap) != 0)
-		return (-1);
-	error = -1;
+	ifap = NULL;
+	if (getifaddrs(&ifap) != 0) {
+		error = errno;
+		goto out;
+	}
+	error = ENOENT;
 	for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) {
 		if (strcmp(ifa->ifa_name, ifname) != 0)
 			continue;
@@ -88,27 +91,29 @@ llflags_get(const char *ifname, int *flagsp)
 		memset(&ifr6, 0, sizeof(ifr6));
 		if (strlcpy(ifr6.ifr_name, ifname, sizeof(ifr6.ifr_name)) >=
 		    sizeof(ifr6.ifr_name)) {
-			freeifaddrs(ifap);
-			errno = EINVAL;
-			return (-1);
+			error = errno;
+			goto out;
 		}
 		memcpy(&ifr6.ifr_ifru.ifru_addr, sin6, sin6->sin6_len);
 		if (ioctl(s, SIOCGIFAFLAG_IN6, &ifr6) < 0) {
 			error = errno;
-			freeifaddrs(ifap);
-			errno = error;
-			return (-1);
+			goto out;
 		}
 
 		*flagsp = ifr6.ifr_ifru.ifru_flags6;
 		error = 0;
 		break;
 	}
+out:
 	(void)close(s);
-	freeifaddrs(ifap);
-	if (error == -1)
-		errno = ENOENT;
-	return (error);
+	if (ifap != NULL)
+		freeifaddrs(ifap);
+	if (error != 0) {
+		errno = error;
+		return (-1);
+	} else {
+		return (0);
+	}
 }
 
 int

Modified: stable/12/usr.sbin/rtsold/dump.c
==============================================================================
--- stable/12/usr.sbin/rtsold/dump.c	Wed Dec  9 00:56:14 2020	(r368470)
+++ stable/12/usr.sbin/rtsold/dump.c	Wed Dec  9 00:56:38 2020	(r368471)
@@ -148,6 +148,7 @@ rtsold_init_dumpfile(const char *dumpfile)
 	if (caph_rights_limit(fileno(fp), &rights) != 0) {
 		warnmsg(LOG_WARNING, __func__, "caph_rights_limit(%s): %s",
 		    dumpfile, strerror(errno));
+		(void)fclose(fp);
 		return (NULL);
 	}
 	return (fp);

Modified: stable/12/usr.sbin/rtsold/if.c
==============================================================================
--- stable/12/usr.sbin/rtsold/if.c	Wed Dec  9 00:56:14 2020	(r368470)
+++ stable/12/usr.sbin/rtsold/if.c	Wed Dec  9 00:56:38 2020	(r368471)
@@ -327,7 +327,7 @@ if_nametosdl(char *name)
 			}
 		}
 	}
-	if (next == lim) {
+	if (next >= lim) {
 		/* search failed */
 		free(buf);
 		return (NULL);

Modified: stable/12/usr.sbin/rtsold/rtsock.c
==============================================================================
--- stable/12/usr.sbin/rtsold/rtsock.c	Wed Dec  9 00:56:14 2020	(r368470)
+++ stable/12/usr.sbin/rtsold/rtsock.c	Wed Dec  9 00:56:38 2020	(r368471)
@@ -84,7 +84,7 @@ rtsock_open(void)
 	if (caph_rights_limit(s, &rights) != 0) {
 		error = errno;
 		(void)close(s);
-		errno = errno;
+		errno = error;
 		return (-1);
 	}
 	return (s);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202012090056.0B90ucrt054553>