X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Futil.c;h=5103cc6ce24fefb5846c9bcb958cf58148d79378;hp=58b96aec68f88fd8f09e9364a1f088cc8b153c8e;hb=6febfd0d4bdf7519e119149b8d8ec03c210aed1d;hpb=0bab36f250cc79776954fd6066c1e2a33f64c016 diff --git a/src/util.c b/src/util.c index 58b96aec6..5103cc6ce 100644 --- a/src/util.c +++ b/src/util.c @@ -1129,7 +1129,7 @@ char *cescape(const char *s) { return r; } -char *cunescape(const char *s) { +char *cunescape_length(const char *s, size_t length) { char *r, *t; const char *f; @@ -1137,10 +1137,10 @@ char *cunescape(const char *s) { /* Undoes C style string escaping */ - if (!(r = new(char, strlen(s)+1))) + if (!(r = new(char, length+1))) return r; - for (f = s, t = r; *f; f++) { + for (f = s, t = r; f < s + length; f++) { if (*f != '\\') { *(t++) = *f; @@ -1242,6 +1242,9 @@ finish: return r; } +char *cunescape(const char *s) { + return cunescape_length(s, strlen(s)); +} char *xescape(const char *s, const char *bad) { char *r, *t;