summaryrefslogtreecommitdiffstats
path: root/contrib/netbsd-tests/fs/tmpfs/h_tools.c
diff options
context:
space:
mode:
authorngie <ngie@FreeBSD.org>2017-01-07 09:30:53 +0000
committerngie <ngie@FreeBSD.org>2017-01-07 09:30:53 +0000
commit2280e6505b32f28cd44e31af0bf0fae7e02dab6d (patch)
treeceafaf2c8e9933772ba4477aff569399c1e23916 /contrib/netbsd-tests/fs/tmpfs/h_tools.c
parent06d25691ba0e6a849f0c30e87ca3df000492924c (diff)
downloadFreeBSD-src-2280e6505b32f28cd44e31af0bf0fae7e02dab6d.zip
FreeBSD-src-2280e6505b32f28cd44e31af0bf0fae7e02dab6d.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/fs/tmpfs/h_tools.c')
-rw-r--r--contrib/netbsd-tests/fs/tmpfs/h_tools.c11
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;
}
OpenPOWER on IntegriCloud