X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fprocess.c;h=2f10bfd8a3164139e6208124b1fce76f92551928;hp=a670368ac3c9d56c941d2741f00064f9ad75866a;hb=363d86365d97315cb71f84a1acad4f32cd69f26b;hpb=0cae9098754d1414844ba2cdb575d80619516dc0 diff --git a/src/process.c b/src/process.c index a670368a..2f10bfd8 100644 --- a/src/process.c +++ b/src/process.c @@ -359,23 +359,24 @@ void unputenv(char *p) { len++; #endif #endif - char var[len]; - strncpy(var, p, len); + char var[len + 1]; + memcpy(var, p, len); + var[len] = 0; #ifdef HAVE_UNSETENV unsetenv(var); #else // We must keep what we putenv() around in memory. // To do this without memory leaks, keep things in a list and reuse if possible. static list_t list = {}; - for(list_node_t *node = list->head; node; node++) { + for(list_node_t *node = list.head; node; node = node->next) { char *data = node->data; if(!strcmp(data, var)) { putenv(data); return; } } - char *data = strcmp(var); - list_insert_tail(list, data); + char *data = xstrdup(var); + list_insert_tail(&list, data); putenv(data); #endif }