added check for too long server name

This commit is contained in:
nifi 2010-02-04 15:23:15 +00:00
parent 4ea2312f23
commit 8cf4821a73

View file

@ -30,7 +30,7 @@
* *
* Author: Adam Dunkels <adam@sics.se> * Author: Adam Dunkels <adam@sics.se>
* *
* $Id: shell-udpsend.c,v 1.4 2010/02/04 14:59:08 adamdunkels Exp $ * $Id: shell-udpsend.c,v 1.5 2010/02/04 15:23:15 nifi Exp $
*/ */
#include <string.h> #include <string.h>
@ -84,13 +84,17 @@ PROCESS_THREAD(shell_udpsend_process, ev, data)
"udpsend <server> <port> [localport]: server as address", ""); "udpsend <server> <port> [localport]: server as address", "");
PROCESS_EXIT(); PROCESS_EXIT();
} }
if(next - (char *)data > sizeof(server)) {
shell_output_str(&udpsend_command, "Too long input", "");
PROCESS_EXIT();
}
strncpy(server, data, sizeof(server)); strncpy(server, data, sizeof(server));
/* NULL-terminate the server string. */ /* NULL-terminate the server string. */
server[next - (char *)data] = 0; server[next - (char *)data] = 0;
++next; ++next;
port = shell_strtolong(next, &nextptr); port = shell_strtolong(next, &nextptr);
uiplib_ipaddrconv(server, (u8_t *)&serveraddr); uiplib_ipaddrconv(server, (uint8_t *)&serveraddr);
udpconn = udp_new(&serveraddr, htons(port), NULL); udpconn = udp_new(&serveraddr, htons(port), NULL);
if(next != nextptr) { if(next != nextptr) {