diff options
author | ngie <ngie@FreeBSD.org> | 2017-02-10 03:22:00 +0000 |
---|---|---|
committer | ngie <ngie@FreeBSD.org> | 2017-02-10 03:22:00 +0000 |
commit | 5ae3442aab834c5c20f000ca90857d98a5a26ee8 (patch) | |
tree | 1c7b68d0bc3f0de65c5736a6f3eccea1125a939c /contrib/netbsd-tests | |
parent | 296c0a47df924de84504bcea39176e06b502b604 (diff) | |
download | FreeBSD-src-5ae3442aab834c5c20f000ca90857d98a5a26ee8.zip FreeBSD-src-5ae3442aab834c5c20f000ca90857d98a5a26ee8.tar.gz |
MFC r311233,r311377:
r311233:
Fix Coverity issues
- Initialize .sun_len before passing it to strlcpy and bind.
- Close fd on error
CID: 978283, 979581
r311377:
Redo fix for CID 979581
The previous change was flawed in terms of how it calculated the
buffer length for the sockaddr_un object. Use SUN_LEN where
appropriate and mute the Coverity complaint by using memset(.., 0, ..)
to zero out the entire structure instead of setting .sun_len to a bogus
value and strlcpy'ing in the contents of argv[1].
SUN_LEN is now being passed to bind(2) as well. For some odd reason
this wasn't flagged as a bug with Coverity.
Diffstat (limited to 'contrib/netbsd-tests')
-rw-r--r-- | contrib/netbsd-tests/fs/tmpfs/h_tools.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/contrib/netbsd-tests/fs/tmpfs/h_tools.c b/contrib/netbsd-tests/fs/tmpfs/h_tools.c index 64abe7b..492e084 100644 --- a/contrib/netbsd-tests/fs/tmpfs/h_tools.c +++ b/contrib/netbsd-tests/fs/tmpfs/h_tools.c @@ -243,12 +243,21 @@ sockets_main(int argc, char **argv) return EXIT_FAILURE; } +#ifdef __FreeBSD__ + memset(&addr, 0, sizeof(addr)); +#endif (void)strlcpy(addr.sun_path, argv[1], sizeof(addr.sun_path)); addr.sun_family = PF_UNIX; - +#ifdef __FreeBSD__ + error = bind(fd, (struct sockaddr *)&addr, SUN_LEN(&addr)); +#else error = bind(fd, (struct sockaddr *)&addr, sizeof(addr)); +#endif if (error == -1) { warn("connect"); +#ifdef __FreeBSD__ + (void)close(fd); +#endif return EXIT_FAILURE; } |