tree-wide: unsetenv cannot fail

... when called with a valid environment variable name. This means that
any time we call it with a fixed string, it is guaranteed to return 0.
(Also when the variable is not present in the environment block.)
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2020-11-10 12:14:28 +01:00
parent 063f9f0da9
commit 44ee03d111
8 changed files with 22 additions and 32 deletions

View File

@ -1418,9 +1418,8 @@ static int fixup_environment(void) {
return -errno;
/* The kernels sets HOME=/ for init. Let's undo this. */
if (path_equal_ptr(getenv("HOME"), "/") &&
unsetenv("HOME") < 0)
log_warning_errno(errno, "Failed to unset $HOME: %m");
if (path_equal_ptr(getenv("HOME"), "/"))
assert_se(unsetenv("HOME") == 0);
return 0;
}

View File

@ -215,9 +215,7 @@ static int acquire_existing_password(const char *user_name, UserRecord *hr, bool
return log_error_errno(r, "Failed to store password: %m");
string_erase(e);
if (unsetenv("PASSWORD") < 0)
return log_error_errno(errno, "Failed to unset $PASSWORD: %m");
assert_se(unsetenv("PASSWORD") == 0);
return 0;
}
@ -255,9 +253,7 @@ static int acquire_token_pin(const char *user_name, UserRecord *hr) {
return log_error_errno(r, "Failed to store token PIN: %m");
string_erase(e);
if (unsetenv("PIN") < 0)
return log_error_errno(errno, "Failed to unset $PIN: %m");
assert_se(unsetenv("PIN") == 0);
return 0;
}
@ -997,9 +993,7 @@ static int acquire_new_password(
return log_error_errno(r, "Failed to store password: %m");
string_erase(e);
if (unsetenv("NEWPASSWORD") < 0)
return log_error_errno(errno, "Failed to unset $NEWPASSWORD: %m");
assert_se(unsetenv("NEWPASSWORD") == 0);
if (ret)
*ret = TAKE_PTR(copy);

View File

@ -30,13 +30,12 @@
#define SNDBUF_SIZE (8*1024*1024)
static void unsetenv_all(bool unset_environment) {
if (!unset_environment)
return;
unsetenv("LISTEN_PID");
unsetenv("LISTEN_FDS");
unsetenv("LISTEN_FDNAMES");
assert_se(unsetenv("LISTEN_PID") == 0);
assert_se(unsetenv("LISTEN_FDS") == 0);
assert_se(unsetenv("LISTEN_FDNAMES") == 0);
}
_public_ int sd_listen_fds(int unset_environment) {
@ -548,7 +547,7 @@ _public_ int sd_pid_notify_with_fds(
finish:
if (unset_environment)
unsetenv("NOTIFY_SOCKET");
assert_se(unsetenv("NOTIFY_SOCKET") == 0);
return r;
}
@ -672,9 +671,9 @@ _public_ int sd_watchdog_enabled(int unset_environment, uint64_t *usec) {
finish:
if (unset_environment && s)
unsetenv("WATCHDOG_USEC");
assert_se(unsetenv("WATCHDOG_USEC") == 0);
if (unset_environment && p)
unsetenv("WATCHDOG_PID");
assert_se(unsetenv("WATCHDOG_PID") == 0);
return r;
}

View File

@ -898,11 +898,11 @@ int main(int argc, char *argv[]) {
}
#endif
(void) unsetenv("USER");
(void) unsetenv("LOGNAME");
(void) unsetenv("SHELL");
(void) unsetenv("HOME");
(void) unsetenv("TMPDIR");
assert_se(unsetenv("USER") == 0);
assert_se(unsetenv("LOGNAME") == 0);
assert_se(unsetenv("SHELL") == 0);
assert_se(unsetenv("HOME") == 0);
assert_se(unsetenv("TMPDIR") == 0);
can_unshare = have_namespaces();

View File

@ -184,7 +184,7 @@ static void test_find_executable_full(void) {
if (p)
assert_se(oldpath = strdup(p));
assert_se(unsetenv("PATH") >= 0);
assert_se(unsetenv("PATH") == 0);
assert_se(find_executable_full("sh", true, &p) == 0);
puts(p);
@ -347,7 +347,7 @@ static void test_fsck_exists(void) {
log_info("/* %s */", __func__);
/* Ensure we use a sane default for PATH. */
unsetenv("PATH");
assert_se(unsetenv("PATH") == 0);
/* fsck.minix is provided by util-linux and will probably exist. */
assert_se(fsck_exists("minix") == 1);

View File

@ -480,7 +480,7 @@ static void test_in_utc_timezone(void) {
assert_se(streq(tzname[0], "CET"));
assert_se(streq(tzname[1], "CEST"));
assert_se(unsetenv("TZ") >= 0);
assert_se(unsetenv("TZ") == 0);
}
static void test_map_clock_usec(void) {

View File

@ -565,7 +565,7 @@ static int worker_main(Manager *_manager, sd_device_monitor *monitor, sd_device
assert(monitor);
assert(dev);
unsetenv("NOTIFY_SOCKET");
assert_se(unsetenv("NOTIFY_SOCKET") == 0);
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, -1) >= 0);

View File

@ -780,10 +780,8 @@ static int run(int argc, char *argv[]) {
return log_error_errno(r, "Failed to set $SYSTEMD_ONLY_USERDB: %m");
log_info("Enabled services: %s", e);
} else {
if (unsetenv("SYSTEMD_ONLY_USERDB") < 0)
return log_error_errno(r, "Failed to unset $SYSTEMD_ONLY_USERDB: %m");
}
} else
assert_se(unsetenv("SYSTEMD_ONLY_USERDB") == 0);
return dispatch_verb(argc, argv, verbs, NULL);
}