From: Guus Sliepen Date: Sun, 5 Jul 2015 14:03:22 +0000 (+0200) Subject: Fix unputenv() on Windows. X-Git-Tag: release-1.0.26~2 X-Git-Url: https://git.tinc-vpn.org/git/browse?a=commitdiff_plain;h=363d86365d97315cb71f84a1acad4f32cd69f26b;hp=0cae9098754d1414844ba2cdb575d80619516dc0;p=tinc Fix unputenv() on Windows. --- 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 }