extras/sntp: fix an off-by-one bug in sntp_set_servers()

The function sntp_set_servers() duplicates the strings supplied in the
server_url[] array into new strings but forgets to allocate the extra
byte needed for the \0 terminator for each string.

Fix the problem by using strdup(), which allocates the right amount of
memory and copies the string at once.
This commit is contained in:
funnydog 2017-03-14 20:30:20 +01:00
parent 6b0547b963
commit 65a0c95b13

View file

@ -730,10 +730,8 @@ int sntp_set_servers(char *server_url[], int num_servers)
/* Allocate memory and copy servers */
for (i = 0; i < num_servers; i++) {
sntp_server_addresses[i] = malloc(strlen(server_url[i]));
if (sntp_server_addresses[i]) {
strcpy(sntp_server_addresses[i], server_url[i]);
} else {
sntp_server_addresses[i] = strdup(server_url[i]);
if (!sntp_server_addresses[i]) {
sntp_num_servers = i;
return -2;
}