mirror of
https://github.com/systemd/systemd.git
synced 2024-11-27 12:13:33 +08:00
hostnamed: allow more special characters in pretty hostname
this addresses the bug at: https://bugs.freedesktop.org/show_bug.cgi?id=59311 https://bugzilla.redhat.com/show_bug.cgi?id=895299 hostnamectl is supposed to allow a range of special characters for the 'pretty' hostname: $ hostnamectl set-hostname --pretty "Nathaniels Desktop !@#$%" ..however, it rejects apostrophes, double quotes, and backslashes. The manual for hostnamectl suggests that this should be allowed. It makes sense to reject \0, \n, etc. pretty_string_is_safe() is the same as string_is_safe(), but allows more special characters.
This commit is contained in:
parent
d47c78be4a
commit
ebe5d6d0d0
@ -159,6 +159,19 @@ static bool valid_chassis(const char *chassis) {
|
||||
chassis);
|
||||
}
|
||||
|
||||
static bool pretty_string_is_safe(const char *p) {
|
||||
const char *t;
|
||||
|
||||
assert(p);
|
||||
|
||||
for (t = p; *t; t++) {
|
||||
if (*t >= '\0' && *t < ' ')
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static const char* fallback_chassis(void) {
|
||||
int r;
|
||||
char *type;
|
||||
@ -553,7 +566,7 @@ static DBusHandlerResult hostname_message_handler(
|
||||
* safe than sorry */
|
||||
if (k == PROP_ICON_NAME && !filename_is_safe(name))
|
||||
return bus_send_error_reply(connection, message, NULL, -EINVAL);
|
||||
if (k == PROP_PRETTY_HOSTNAME && !string_is_safe(name))
|
||||
if (k == PROP_PRETTY_HOSTNAME && !pretty_string_is_safe(name))
|
||||
return bus_send_error_reply(connection, message, NULL, -EINVAL);
|
||||
if (k == PROP_CHASSIS && !valid_chassis(name))
|
||||
return bus_send_error_reply(connection, message, NULL, -EINVAL);
|
||||
|
Loading…
Reference in New Issue
Block a user