From cc84c3d7916640b75ca4dc0785f9b1f417df1664 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Mon, 19 Jul 2021 19:57:59 -0700 Subject: Made escape sequence handling stricter: no longer supporting arbitrary characters, only special escapes like \n, hex sequences like \x0a, octal sequences like \012, and backslashes \\ --- utils.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'utils.c') diff --git a/utils.c b/utils.c index fd13918..93f6ebd 100644 --- a/utils.c +++ b/utils.c @@ -88,7 +88,7 @@ char unescapechar(const char *escaped, const char **end) case 'a': ret = '\a'; break; case 'b': ret = '\b'; break; case 'n': ret = '\n'; break; case 'r': ret = '\r'; break; case 't': ret = '\t'; break; case 'v': ret = '\v'; break; - case 'e': ret = '\033'; break; + case 'e': ret = '\033'; break; case '\\': ret = '\\'; break; case 'x': { // Hex static const unsigned char hextable[255] = { ['0']=0x10, ['1']=0x1, ['2']=0x2, ['3']=0x3, ['4']=0x4, @@ -114,7 +114,10 @@ char unescapechar(const char *escaped, const char **end) } break; } - default: break; + default: { + if (end) *end = escaped; + return (char)0; + } } if (end) *end = &escaped[len]; return (char)ret; -- cgit v1.2.3