1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-06 13:17:44 +03:00

hostname-setup: gracefully handle kernel with empty CONFIG_DEFAULT_HOSTNAME

Previously, sethostname_idempotent_full() calls gethostname_full() with
GET_HOSTNAME_ALLOW_NONE and GET_HOSTNAME_ALLOW_LOCALHOST flags. That
intended to get any values set by kernel. But, that does not work, as
the hostname may be empty.

Let's simplify the logic. The function sethostname_idempotent_full()
intends to set the requested hostname only when the current hostname
is different from the requested one. So, no check in getostname_full()
is required. Hence, simply use the result of uname() here.

Fixes #21896.

(cherry picked from commit d8d6b2275f)
This commit is contained in:
Yu Watanabe 2021-12-31 03:48:17 +09:00 committed by Zbigniew Jędrzejewski-Szmek
parent 1c4c566d86
commit 7c78994860

View File

@ -20,16 +20,13 @@
#include "util.h"
static int sethostname_idempotent_full(const char *s, bool really) {
_cleanup_free_ char *buf = NULL;
int r;
struct utsname u;
assert(s);
r = gethostname_full(GET_HOSTNAME_ALLOW_NONE | GET_HOSTNAME_ALLOW_LOCALHOST, &buf);
if (r < 0)
return r;
assert_se(uname(&u) >= 0);
if (streq(buf, s))
if (streq_ptr(s, u.nodename))
return 0;
if (really &&