summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2016-11-29 21:27:01 +0000
committerRoy Marples <roy@marples.name>2016-11-29 21:27:01 +0000
commit72fca43053c786408f3a05769ab70f3fe450a6d6 (patch)
treed72571c8d06ff4be9100e5d6eb9f93ffb8581b58
parentb97c75201c83f16643646e9a4a9e1b2b0c501d76 (diff)
downloaddhcpcd-72fca43053c786408f3a05769ab70f3fe450a6d6.tar.xz
Don't trust bootp->sname to be NULL terminated.
-rw-r--r--dhcp.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/dhcp.c b/dhcp.c
index e6775c58..aa19b082 100644
--- a/dhcp.c
+++ b/dhcp.c
@@ -2624,7 +2624,7 @@ log_dhcp(int lvl, const char *msg,
const struct in_addr *from, int ad)
{
const char *tfrom;
- char *a, sname[sizeof(bootp->sname) * 4];
+ char *a, sname[sizeof(bootp->sname) * 4];
struct in_addr addr;
int r;
uint8_t overl;
@@ -2663,8 +2663,8 @@ log_dhcp(int lvl, const char *msg,
DHO_OPTSOVERLOADED) == -1)
overl = 0;
if (bootp->sname[0] && r == 0 && !(overl & 2)) {
- print_string(sname, sizeof(sname), OT_STRING,
- bootp->sname, strlen((const char *)bootp->sname));
+ print_string(sname, sizeof(sname), OT_STRING | OT_DOMAIN,
+ bootp->sname, sizeof(bootp->sname));
if (a == NULL)
logger(ifp->ctx, lvl, "%s: %s %s %s `%s'",
ifp->name, msg, tfrom, inet_ntoa(addr), sname);