add putenv double-free regression test
[libc-test] / src / regression / putenv-doublefree.c
diff --git a/src/regression/putenv-doublefree.c b/src/regression/putenv-doublefree.c
new file mode 100644 (file)
index 0000000..f3a1f6c
--- /dev/null
@@ -0,0 +1,16 @@
+// commit 9543656cc32fda48fc463f332ee20e91eed2b768 2016-03-06
+// __putenv could be confused into freeing storage that does not belong to the implementation
+#define _GNU_SOURCE
+#include <stdlib.h>
+#include <string.h>
+
+int main(void)
+{
+       setenv("A", "1", 1);
+       setenv("A", "2", 1);
+       char *c = strdup("A=3");
+       putenv(c);
+       setenv("A", "4", 1);
+       free(c);
+       return 0;
+}