From 105804e6bdaa05309937b1a6a1167539545b1774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 11 Sep 2013 21:50:16 -0400 Subject: [PATCH 3/4] Allow tabs in environment files bash allows them, and so should we. string_has_cc is changed to allow tabs, and if they are not wanted, they must be now checked for explicitly. There are two other callers, apart from the env file loaders, and one already checked anyway, and the other is changed to check. https://bugs.freedesktop.org/show_bug.cgi?id=68592 https://bugs.gentoo.org/show_bug.cgi?id=481554 Conflicts: src/test/test-fileio.c --- src/hostname/hostnamed.c | 3 ++- src/shared/util.c | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index 0437e33..6a43aeb 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -553,7 +553,8 @@ 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_has_cc(name)) + if (k == PROP_PRETTY_HOSTNAME && + (string_has_cc(name) || chars_intersect(name, "\t"))) 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); diff --git a/src/shared/util.c b/src/shared/util.c index 673e0da..113133f 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5264,6 +5264,10 @@ bool string_is_safe(const char *p) { return true; } +/** + * Check if a string contains control characters. + * Spaces and tabs are not considered control characters. + */ bool string_has_cc(const char *p) { const char *t; -- 1.8.3.2