MFp4 @229477:
The gethostname(3) function won't work in capability mode, because reading kern.hostname sysctl is not permitted there. Cache hostname early and use cached value later. Reviewed by: brooks Sponsored by: The FreeBSD Foundation
This commit is contained in:
parent
981cfd3abf
commit
696dccfa35
@ -91,6 +91,8 @@ int log_perror = 1;
|
||||
int privfd;
|
||||
int nullfd = -1;
|
||||
|
||||
char hostname[_POSIX_HOST_NAME_MAX + 1];
|
||||
|
||||
struct iaddr iaddr_broadcast = { 4, { 255, 255, 255, 255 } };
|
||||
struct in_addr inaddr_any, inaddr_broadcast;
|
||||
|
||||
@ -446,6 +448,13 @@ main(int argc, char *argv[])
|
||||
error("no such user: nobody");
|
||||
}
|
||||
|
||||
/*
|
||||
* Obtain hostname before entering capability mode - it won't be
|
||||
* possible then, as reading kern.hostname is not permitted.
|
||||
*/
|
||||
if (gethostname(hostname, sizeof(hostname)) < 0)
|
||||
hostname[0] = '\0';
|
||||
|
||||
if (pipe(pipe_fd) == -1)
|
||||
error("pipe");
|
||||
|
||||
@ -1525,9 +1534,8 @@ make_discover(struct interface_info *ip, struct client_lease *lease)
|
||||
}
|
||||
|
||||
/* send host name if not set via config file. */
|
||||
char hostname[_POSIX_HOST_NAME_MAX+1];
|
||||
if (!options[DHO_HOST_NAME]) {
|
||||
if (gethostname(hostname, sizeof(hostname)) == 0) {
|
||||
if (hostname[0] != '\0') {
|
||||
size_t len;
|
||||
char* posDot = strchr(hostname, '.');
|
||||
if (posDot != NULL)
|
||||
@ -1649,9 +1657,8 @@ make_request(struct interface_info *ip, struct client_lease * lease)
|
||||
}
|
||||
|
||||
/* send host name if not set via config file. */
|
||||
char hostname[_POSIX_HOST_NAME_MAX+1];
|
||||
if (!options[DHO_HOST_NAME]) {
|
||||
if (gethostname(hostname, sizeof(hostname)) == 0) {
|
||||
if (hostname[0] != '\0') {
|
||||
size_t len;
|
||||
char* posDot = strchr(hostname, '.');
|
||||
if (posDot != NULL)
|
||||
|
Loading…
Reference in New Issue
Block a user