From eef4b80033e9ca8e61ccb40a710babcfe9b69b26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 May 2020 17:30:02 +0200 Subject: [PATCH] Add a basic test that the configured fallback hostname is OK Ideally, assert_cc() would be used for this, so that it is not possible to even compile systemd with something like '-Dfallback-hostname=.foo'. But to do a proper check we need to call hostname_is_valid(), and we cannot depend on being able to run code (e.g. during cross-compilation). So let's do a very superficial check in meson, and a proper on in test-util. --- meson.build | 9 ++++++++- src/test/test-hostname-util.c | 9 +++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 28494c9af2..fea226e2d6 100644 --- a/meson.build +++ b/meson.build @@ -639,7 +639,14 @@ endforeach ############################################################ -conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname')) +fallback_hostname = get_option('fallback-hostname') +if fallback_hostname == '' or fallback_hostname[0] == '.' or fallback_hostname[0] == '-' + error('Invalid fallback-hostname configuration') + # A more extensive test is done in test-hostname-util. Let's catch + # the most obvious errors here so we don't fail with an assert later. +endif +conf.set_quoted('FALLBACK_HOSTNAME', fallback_hostname) + conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname')) gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : []) diff --git a/src/test/test-hostname-util.c b/src/test/test-hostname-util.c index ec34f9cd71..fe1b23e1bb 100644 --- a/src/test/test-hostname-util.c +++ b/src/test/test-hostname-util.c @@ -140,6 +140,13 @@ static void test_read_etc_hostname(void) { unlink(path); } +static void test_fallback_hostname(void) { + if (!hostname_is_valid(FALLBACK_HOSTNAME, false)) { + log_error("Configured fallback hostname \"%s\" is not valid.", FALLBACK_HOSTNAME); + exit(EXIT_FAILURE); + } +} + int main(int argc, char *argv[]) { log_parse_environment(); log_open(); @@ -148,5 +155,7 @@ int main(int argc, char *argv[]) { test_hostname_cleanup(); test_read_etc_hostname(); + test_fallback_hostname(); + return 0; }