On Tue, 05.03.13 11:46, Nathaniel Chen (nathaniel.c...@intel.com) wrote:

Thanks! Applied!

> this addresses the bug at:
>   https://bugs.freedesktop.org/show_bug.cgi?id=59311
> 
> 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.
> ---
>  src/hostname/hostnamed.c | 15 ++++++++++++++-
>  1 file changed, 14 insertions(+), 1 deletion(-)
> 
> diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c
> index 7ea891c..979dcfd 100644
> --- a/src/hostname/hostnamed.c
> +++ b/src/hostname/hostnamed.c
> @@ -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);


Lennart

-- 
Lennart Poettering - Red Hat, Inc.
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to