aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--prog/encoding.go4
-rw-r--r--prog/encoding_test.go4
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`,
+ },
})
}