From ca4f2c41b016530b5865b40b8dbbf0a3a0e8e634 Mon Sep 17 00:00:00 2001 From: Scott James Remnant Date: Wed, 16 May 2007 20:00:29 +0200 Subject: [PATCH] replace_untrusted_chars: replace all whitespace with space --- udev_utils_string.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/udev_utils_string.c b/udev_utils_string.c index 38b91aa0b..6f51aef01 100644 --- a/udev_utils_string.c +++ b/udev_utils_string.c @@ -229,15 +229,17 @@ int replace_untrusted_chars(char *str) if ((str[i] >= '0' && str[i] <= '9') || (str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z') || - strchr(" #$%+-./:=?@_,", str[i])) { + strchr("#$%+-./:=?@_,", str[i])) { i++; continue; } + /* hex encoding */ if (str[i] == '\\' && str[i+1] == 'x') { i += 2; continue; } + /* valid utf8 is accepted */ len = utf8_encoded_valid_unichar(&str[i]); if (len > 1) { @@ -245,6 +247,14 @@ int replace_untrusted_chars(char *str) continue; } + /* whitespace replaced with ordinary space */ + if (isspace(str[i])) { + str[i] = ' '; + i++; + replaced++; + continue; + } + /* everything else is garbage */ str[i] = '_'; i++; -- 2.30.2