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. MFC-after: 3 days
This commit is contained in:
parent
f540cb27a2
commit
1253835121
@ -1624,7 +1624,6 @@ getconfigent(void)
|
||||
int v6bind;
|
||||
#endif
|
||||
int i;
|
||||
size_t unsz;
|
||||
|
||||
#ifdef IPSEC
|
||||
policy = NULL;
|
||||
@ -1852,16 +1851,16 @@ getconfigent(void)
|
||||
#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))
|
||||
|
Loading…
Reference in New Issue
Block a user