svn commit: r368471 - stable/12/usr.sbin/rtsold
Mark Johnston
markj at FreeBSD.org
Wed Dec 9 00:56:39 UTC 2020
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);
More information about the svn-src-stable-12
mailing list