From: Roy Marples Date: Mon, 26 Jan 2009 09:14:54 +0000 (+0000) Subject: Ensure that we have enough buffer for gethostname and terminate it correctly. X-Git-Tag: v4.0.8^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d5a1ddc98e056a4dc33ef238f8075aaf511a83b0;p=thirdparty%2Fdhcpcd.git Ensure that we have enough buffer for gethostname and terminate it correctly. --- diff --git a/dhcpcd.c b/dhcpcd.c index 93d8b8d6..58321ef7 100644 --- a/dhcpcd.c +++ b/dhcpcd.c @@ -648,7 +648,9 @@ main(int argc, char **argv) } #endif - gethostname(options->hostname + 1, sizeof(options->hostname)); + gethostname(options->hostname + 1, HOSTNAME_MAX_LEN); + /* Ensure that the hostname is NULL terminated */ + options->hostname[HOSTNAME_MAX_LEN + 1] = '\0'; if (strcmp(options->hostname + 1, "(none)") == 0 || strcmp(options->hostname + 1, "localhost") == 0) options->hostname[1] = '\0'; diff --git a/dhcpcd.h b/dhcpcd.h index 1cd2b5d5..0aeffaed 100644 --- a/dhcpcd.h +++ b/dhcpcd.h @@ -82,12 +82,12 @@ struct options { char script[PATH_MAX]; char pidfile[PATH_MAX]; - char hostname[HOSTNAME_MAX_LEN + 1]; + char hostname[HOSTNAME_MAX_LEN + 2]; int fqdn; - uint8_t vendorclassid[VENDORCLASSID_MAX_LEN + 1]; - char clientid[CLIENTID_MAX_LEN + 1]; - uint8_t userclass[USERCLASS_MAX_LEN + 1]; - uint8_t vendor[VENDOR_MAX_LEN + 1]; + uint8_t vendorclassid[VENDORCLASSID_MAX_LEN + 2]; + char clientid[CLIENTID_MAX_LEN + 2]; + uint8_t userclass[USERCLASS_MAX_LEN + 2]; + uint8_t vendor[VENDOR_MAX_LEN + 2]; size_t blacklist_len; in_addr_t *blacklist;