diff --git a/examples/rpl_udp/udp.c b/examples/rpl_udp/udp.c index f8ed0ae5ab7b..c2401bb18f19 100644 --- a/examples/rpl_udp/udp.c +++ b/examples/rpl_udp/udp.c @@ -102,17 +102,21 @@ int udp_send(int argc, char **argv) ipv6_addr_t ipaddr; int bytes_sent; int address; - char text[5]; if (argc != 3) { printf("usage: send \n"); return 1; } - address = atoi(argv[1]); + /* max payload size = MTU - MAC - AES - IPV6_HDR_LEN - UDP_HDR_LEN + * 33 = 127 - 25 - 21 - 40 - 8 + */ + if (strlen(argv[2]) > 32) { + puts(" is too large to be sent (max. 33 characters)."); + return 1; + } - strncpy(text, argv[2], sizeof(text)); - text[sizeof(text) - 1] = 0; + address = atoi(argv[1]); sock = socket_base_socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP); @@ -134,8 +138,8 @@ int udp_send(int argc, char **argv) memcpy(&sa.sin6_addr, &ipaddr, 16); sa.sin6_port = HTONS(SERVER_PORT); - bytes_sent = socket_base_sendto(sock, (char *)text, - strlen(text) + 1, 0, &sa, + bytes_sent = socket_base_sendto(sock, argv[2], + strlen(argv[2]), 0, &sa, sizeof(sa)); if (bytes_sent < 0) {