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;
|
int v6bind;
|
||||||
#endif
|
#endif
|
||||||
int i;
|
int i;
|
||||||
size_t unsz;
|
|
||||||
|
|
||||||
#ifdef IPSEC
|
#ifdef IPSEC
|
||||||
policy = NULL;
|
policy = NULL;
|
||||||
@ -1852,16 +1851,16 @@ getconfigent(void)
|
|||||||
#define SUN_PATH_MAXSIZE sizeof(sep->se_ctrladdr_un.sun_path)
|
#define SUN_PATH_MAXSIZE sizeof(sep->se_ctrladdr_un.sun_path)
|
||||||
memset(&sep->se_ctrladdr, 0, sizeof(sep->se_ctrladdr));
|
memset(&sep->se_ctrladdr, 0, sizeof(sep->se_ctrladdr));
|
||||||
sep->se_ctrladdr_un.sun_family = sep->se_family;
|
sep->se_ctrladdr_un.sun_family = sep->se_family;
|
||||||
if ((unsz = strlcpy(sep->se_ctrladdr_un.sun_path,
|
if (strlcpy(sep->se_ctrladdr_un.sun_path, sep->se_service,
|
||||||
sep->se_service, SUN_PATH_MAXSIZE) >= SUN_PATH_MAXSIZE)) {
|
SUN_PATH_MAXSIZE) >= SUN_PATH_MAXSIZE) {
|
||||||
syslog(LOG_ERR,
|
syslog(LOG_ERR,
|
||||||
"domain socket pathname too long for service %s",
|
"domain socket pathname too long for service %s",
|
||||||
sep->se_service);
|
sep->se_service);
|
||||||
goto more;
|
goto more;
|
||||||
}
|
}
|
||||||
sep->se_ctrladdr_un.sun_len = unsz;
|
|
||||||
#undef SUN_PATH_MAXSIZE
|
#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);
|
arg = sskip(&cp);
|
||||||
if (!strncmp(arg, "wait", 4))
|
if (!strncmp(arg, "wait", 4))
|
||||||
|
Loading…
Reference in New Issue
Block a user