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 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