Public bug reported: setenv ("NAME", NULL) corrupts the environment. It doesn't seem specified what the function should do when value is NULL, but the code does check for it - it just does the wrong thing:
stdlib/setenv.c: ... __add_to_environ (name, value, combined, replace) ... const size_t vallen = value != NULL ? strlen (value) + 1 : 0; ... memcpy (new_value, name, namelen); new_value[namelen] = '='; memcpy (&new_value[namelen + 1], value, vallen); ... i.e. the new value is set to "NAME=" without the trailing nul character. Found in bug 861123 where indicator-datetime does a: x = g_strdup (getenv ("NAME")); unsetenv ("NAME"); // do something setenv ("NAME", x); ** Affects: eglibc Importance: Unknown Status: Unknown ** Affects: eglibc (Ubuntu) Importance: Undecided Status: New -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/861132 Title: setenv ("NAME", NULL) corrupts environment To manage notifications about this bug go to: https://bugs.launchpad.net/eglibc/+bug/861132/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs