mirror of
https://github.com/golang/go
synced 2024-11-19 10:04:56 -07:00
strconv: check for empty string in UnquoteChar
The existing implementation panics on malformed input of an empty string. strconv.Unquote validates the length of the inputs, but calling UnquoteChar directly with an empty string leads to a panic, so add a check for length. Also, add a test to go/constant to ensure that MakeFromLiteral does not panic on malformed input such as "const x = ''". Change-Id: I4217e38db48a09a21ec414bbfb3087709da62904 Reviewed-on: https://go-review.googlesource.com/116215 Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
This commit is contained in:
parent
d0228b03bd
commit
b219a68ad9
@ -431,6 +431,7 @@ func TestUnknown(t *testing.T) {
|
||||
MakeBool(false), // token.ADD ok below, operation is never considered
|
||||
MakeString(""),
|
||||
MakeInt64(1),
|
||||
MakeFromLiteral("''", token.CHAR, 0),
|
||||
MakeFromLiteral("-1234567890123456789012345678901234567890", token.INT, 0),
|
||||
MakeFloat64(1.2),
|
||||
MakeImag(MakeFloat64(1.2)),
|
||||
|
@ -237,6 +237,10 @@ func unhex(b byte) (v rune, ok bool) {
|
||||
// If set to zero, it does not permit either escape and allows both quote characters to appear unescaped.
|
||||
func UnquoteChar(s string, quote byte) (value rune, multibyte bool, tail string, err error) {
|
||||
// easy cases
|
||||
if len(s) == 0 {
|
||||
err = ErrSyntax
|
||||
return
|
||||
}
|
||||
switch c := s[0]; {
|
||||
case c == quote && (quote == '\'' || quote == '"'):
|
||||
err = ErrSyntax
|
||||
|
Loading…
Reference in New Issue
Block a user