1
0
mirror of https://github.com/systemd/systemd.git synced 2025-03-21 02:50:18 +03:00

hostname: several follow-ups for wildcard hostname support (#36707)

This commit is contained in:
Yu Watanabe 2025-03-13 00:46:00 +09:00 committed by GitHub
commit a4cb6c41a1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 30 additions and 5 deletions

View File

@ -268,9 +268,10 @@ int hostname_substitute_wildcards(char *name) {
* Note that this does not directly use the machine ID, because that's not necessarily supposed to be
* public information to be broadcast on the network, while the hostname certainly is. */
for (char *n = name; *n; n++) {
if (*n != '?')
continue;
for (char *n = name; ; n++) {
n = strchr(n, '?');
if (!n)
return 0;
if (left_bits <= 0) {
if (sd_id128_is_null(mid)) {
@ -293,8 +294,6 @@ int hostname_substitute_wildcards(char *name) {
h >>= 4;
left_bits -= 4;
}
return 0;
}
char* get_default_hostname(void) {

View File

@ -76,6 +76,32 @@ TEST(read_etc_hostname) {
assert(hostname == (char*) 0x1234); /* does not touch argument on error */
}
TEST(hostname_substitute_wildcards) {
int r;
r = sd_id128_get_machine(NULL);
if (ERRNO_IS_NEG_MACHINE_ID_UNSET(r))
return (void) log_tests_skipped_errno(r, "skipping wildcard hostname tests, no machine ID defined");
_cleanup_free_ char *buf = NULL;
ASSERT_NOT_NULL((buf = strdup("")));
ASSERT_OK(hostname_substitute_wildcards(buf));
ASSERT_STREQ(buf, "");
ASSERT_NULL((buf = mfree(buf)));
ASSERT_NOT_NULL((buf = strdup("hogehoge")));
ASSERT_OK(hostname_substitute_wildcards(buf));
ASSERT_STREQ(buf, "hogehoge");
ASSERT_NULL((buf = mfree(buf)));
ASSERT_NOT_NULL((buf = strdup("hoge??hoge??foo?")));
ASSERT_OK(hostname_substitute_wildcards(buf));
log_debug("hostname_substitute_wildcards(\"hoge??hoge??foo?\"): → \"%s\"", buf);
ASSERT_EQ(fnmatch("hoge??hoge??foo?", buf, /* flags= */ 0), 0);
ASSERT_TRUE(hostname_is_valid(buf, /* flags= */ 0));
ASSERT_NULL((buf = mfree(buf)));
}
TEST(hostname_setup) {
hostname_setup(false);
}