mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-22 22:03:43 +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 d8d6b2275f7b7a5b58c6b0d89b78c927333c6af9)
This commit is contained in:
parent
1c4c566d86
commit
7c78994860
@ -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 &&
|
||||
|
Loading…
x
Reference in New Issue
Block a user