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. Reported by: jilles, jmallett MFC after: 2 days X-MFC with: r311233
This commit is contained in:
parent
4747f0df83
commit
20a4ce8bf2
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=311377
@ -244,13 +244,15 @@ sockets_main(int argc, char **argv)
|
||||
}
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
addr.sun_len = sizeof(addr.sun_path);
|
||||
(void)strlcpy(addr.sun_path, argv[1], addr.sun_len);
|
||||
#else
|
||||
(void)strlcpy(addr.sun_path, argv[1], sizeof(addr.sun_path));
|
||||
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__
|
||||
|
Loading…
Reference in New Issue
Block a user