diff --git a/src/basic/hostname-util.c b/src/basic/hostname-util.c index 5109605e0c5..29d69910d24 100644 --- a/src/basic/hostname-util.c +++ b/src/basic/hostname-util.c @@ -14,6 +14,8 @@ #include "strv.h" char* get_default_hostname(void) { + int r; + const char *e = secure_getenv("SYSTEMD_DEFAULT_HOSTNAME"); if (e) { if (hostname_is_valid(e, 0)) @@ -21,6 +23,16 @@ char* get_default_hostname(void) { log_debug("Invalid hostname in $SYSTEMD_DEFAULT_HOSTNAME, ignoring: %s", e); } + _cleanup_free_ char *f = NULL; + r = parse_os_release(NULL, "DEFAULT_HOSTNAME", &f); + if (r < 0) + log_debug_errno(r, "Failed to parse os-release, ignoring: %m"); + else if (f) { + if (hostname_is_valid(f, 0)) + return TAKE_PTR(f); + log_debug("Invalid hostname in os-release, ignoring: %s", f); + } + return strdup(FALLBACK_HOSTNAME); }