diff options
| -rw-r--r-- | prog/encoding.go | 4 | ||||
| -rw-r--r-- | prog/encoding_test.go | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/prog/encoding.go b/prog/encoding.go index 33983fb47..5c4be432e 100644 --- a/prog/encoding.go +++ b/prog/encoding.go @@ -978,15 +978,15 @@ func (p *parser) deserializeData() ([]byte, bool, error) { // Read Base64 data. p.consume() var rawData []byte - for p.Char() != '"' { + for !p.EOF() && p.Char() != '"' { v := p.consume() rawData = append(rawData, v) } + p.Parse('"') decoded, err := DecodeB64(rawData) if err != nil { return nil, false, fmt.Errorf("data arg is corrupt: %v", err) } - p.Parse('"') return decoded, true, nil } val := "" diff --git a/prog/encoding_test.go b/prog/encoding_test.go index 4cb836922..73c2cabcc 100644 --- a/prog/encoding_test.go +++ b/prog/encoding_test.go @@ -331,6 +331,10 @@ func TestDeserialize(t *testing.T) { In: `test$opt2(0x0) (fail_nth: 0)`, Out: `test$opt2(0x0)`, }, + { + In: `test$str2(&(0x7f0000000000)="$eJwqrqzKTszJSS0CBAAA//8TyQPi`, + Err: `want ", got EOF`, + }, }) } |
