aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2021-02-12 19:19:43 +0000
committerKyle Evans <kevans@FreeBSD.org>2021-02-16 02:25:15 +0000
commit46cccd5ceb75b67a19459ced93f9b13a52722c63 (patch)
tree13c2f6b2f01948837a475a72767bd4d1ab22c9bc
parentbe4b3e7a5bf9e7b497fcfcc242eebb84d29a6e42 (diff)
downloadsrc-46cccd5ceb75b67a19459ced93f9b13a52722c63.tar.gz
src-46cccd5ceb75b67a19459ced93f9b13a52722c63.zip
inetd: fix unix sockaddr's length assignment
unsz was always exactly '1' here due to an unfortunate mispositioning of closing parenthesis. While it's generally irrelevant because bind(2) is passed the (accurate) sep->se_ctrladdr_size instead, it's not very helpful for anything locally that wants to use it rather than assuming that sep->se_ctrladdr_size perfectly fits the end of sun_path. Just drop unsz entirely and use the result of SUN_LEN() for it. (cherry picked from commit 1253835121cb38fd93478849e32a4a4c13436fb2)
-rw-r--r--usr.sbin/inetd/inetd.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/usr.sbin/inetd/inetd.c b/usr.sbin/inetd/inetd.c
index 7ba51c9af593..6c4e26fad5cd 100644
--- a/usr.sbin/inetd/inetd.c
+++ b/usr.sbin/inetd/inetd.c
@@ -1624,7 +1624,6 @@ getconfigent(void)
int v6bind;
#endif
int i;
- size_t unsz;
#ifdef IPSEC
policy = NULL;
@@ -1852,16 +1851,16 @@ more:
#define SUN_PATH_MAXSIZE sizeof(sep->se_ctrladdr_un.sun_path)
memset(&sep->se_ctrladdr, 0, sizeof(sep->se_ctrladdr));
sep->se_ctrladdr_un.sun_family = sep->se_family;
- if ((unsz = strlcpy(sep->se_ctrladdr_un.sun_path,
- sep->se_service, SUN_PATH_MAXSIZE) >= SUN_PATH_MAXSIZE)) {
+ if (strlcpy(sep->se_ctrladdr_un.sun_path, sep->se_service,
+ SUN_PATH_MAXSIZE) >= SUN_PATH_MAXSIZE) {
syslog(LOG_ERR,
"domain socket pathname too long for service %s",
sep->se_service);
goto more;
}
- sep->se_ctrladdr_un.sun_len = unsz;
#undef SUN_PATH_MAXSIZE
- sep->se_ctrladdr_size = SUN_LEN(&sep->se_ctrladdr_un);
+ sep->se_ctrladdr_size = sep->se_ctrladdr_un.sun_len =
+ SUN_LEN(&sep->se_ctrladdr_un);
}
arg = sskip(&cp);
if (!strncmp(arg, "wait", 4))