From 54e9f5418e2065dae56886e3c2976129703a6327 Mon Sep 17 00:00:00 2001 From: cenright Date: Wed, 15 Jul 2020 16:34:34 -0400 Subject: [PATCH] avoid panic on unknown escape sequence --- parse/quote.go | 2 +- parse/quote_test.go | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/parse/quote.go b/parse/quote.go index ccde4ef..6cf6813 100644 --- a/parse/quote.go +++ b/parse/quote.go @@ -76,7 +76,7 @@ func unquoteString(s string) (string, error) { } else { replacement, ok := unescapes[r] if !ok { - return "", errors.New("unrecognized escape code: \\" + s[i:i+1]) + return "", errors.New("unrecognized escape code: \\" + s[i-1:i]) } r = rune(replacement) } diff --git a/parse/quote_test.go b/parse/quote_test.go index 88e9692..1dcb6c8 100644 --- a/parse/quote_test.go +++ b/parse/quote_test.go @@ -41,3 +41,17 @@ func TestUnquote(t *testing.T) { } } } + +func TestUnquoteUnrecognized(t *testing.T) { + var tests = []string{ + `'\0'`, + `'\a'`, + `'\z'`, + } + for _, tc := range tests { + _, err := unquoteString(tc) + if err == nil { + t.Errorf("expected unrecognized escape sequence %s to fail", tc) + } + } +}