summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-07-07 11:47:10 +0200
committerLennart Poettering <lennart@poettering.net>2014-07-07 15:25:55 +0200
commit3a8a916338d8446b938f3cf40f6aae0c611892e3 (patch)
tree77f3921e3f5ac1db2a1486961993827ae40f9bab
parenta669ea9860900d5cdebbc4cb9aaea72db7e28a02 (diff)
util: consider 0x7F a control chracter (which it is: DEL)
Let's better be safe than sorry.
-rw-r--r--src/shared/util.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/shared/util.c b/src/shared/util.c
index 3d875c72b3..d25ee6652f 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -1608,8 +1608,9 @@ int read_one_char(FILE *f, char *ret, usec_t t, bool *need_nl) {
return -ETIMEDOUT;
}
+ errno = 0;
if (!fgets(line, sizeof(line), f))
- return -EIO;
+ return errno ? -errno : -EIO;
truncate_nl(line);
@@ -5355,6 +5356,9 @@ bool string_is_safe(const char *p) {
if (*t > 0 && *t < ' ')
return false;
+ if (*t == 127)
+ return false;
+
if (strchr("\\\"\'", *t))
return false;
}
@@ -5371,10 +5375,14 @@ bool string_has_cc(const char *p) {
assert(p);
- for (t = p; *t; t++)
+ for (t = p; *t; t++) {
if (*t > 0 && *t < ' ' && *t != '\t')
return true;
+ if (*t == 127)
+ return true;
+ }
+
return false;
}