1 #include <assert.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 // This tests that the suppression for the leak in setenv() works. See bug
6 // 188572.
7
main(void)8 int main(void)
9 {
10 char* val1 = "x";
11 char* val2 = "xx";
12 char* val3 = "xxx";
13
14 setenv("MYVAR", val1, /*overwrite*/0); // makes a copy which is later leaked
15 assert( 0 == strcmp(getenv("MYVAR"), val1) );
16
17 setenv("MYVAR", val2, /*overwrite*/1); // makes a copy which is later leaked
18 assert( 0 == strcmp(getenv("MYVAR"), val2) );
19
20 setenv("MYVAR", val3, /*overwrite*/0); // doesn't overwrite MYVAR=val2
21 assert( 0 == strcmp(getenv("MYVAR"), val2) );
22
23 putenv("MYVAR=xxxx"); // no leak for putenv()
24 assert( 0 == strcmp(getenv("MYVAR"), "xxxx") );
25
26 unsetenv("MYVAR");
27 assert( NULL == getenv("MYVAR") );
28
29 return 0;
30 }
31
32