From 3bf5eb49d0e4bdee557ceb9ffe98153bb6168902 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Sun, 1 Jul 2007 03:22:28 +0100 Subject: [PATCH] Can't use strncpy() to copy strings that aren't NUL-terminated to begin with. --- src/net/udp/dhcp.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/net/udp/dhcp.c b/src/net/udp/dhcp.c index 961f66a5..03e6c9d9 100644 --- a/src/net/udp/dhcp.c +++ b/src/net/udp/dhcp.c @@ -153,10 +153,16 @@ static int set_dhcp_packet_option ( struct dhcp_packet *dhcppkt, memcpy ( &dhcphdr->siaddr, data, sizeof ( dhcphdr->siaddr ) ); return 0; case DHCP_TFTP_SERVER_NAME: - strncpy ( dhcphdr->sname, data, sizeof ( dhcphdr->sname ) ); + memset ( dhcphdr->sname, 0, sizeof ( dhcphdr->sname ) ); + if ( len > sizeof ( dhcphdr->sname ) ) + len = sizeof ( dhcphdr->sname ); + memcpy ( dhcphdr->sname, data, len ); return 0; case DHCP_BOOTFILE_NAME: - strncpy ( dhcphdr->file, data, sizeof ( dhcphdr->file ) ); + memset ( dhcphdr->file, 0, sizeof ( dhcphdr->file ) ); + if ( len > sizeof ( dhcphdr->file ) ) + len = sizeof ( dhcphdr->file ); + memcpy ( dhcphdr->file, data, len ); return 0; default: /* Continue processing as normal */