From 2ccbaa4e79e3085850018bda760b58fd4d071fb3 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Sun, 23 Aug 2015 17:45:59 +1000 Subject: [PATCH] bencode: Don't allow extraneous trailing 'e's --- bencode/decode.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/bencode/decode.go b/bencode/decode.go index 2ab9c017..2888d080 100644 --- a/bencode/decode.go +++ b/bencode/decode.go @@ -33,7 +33,9 @@ func (d *decoder) decode(v interface{}) (err error) { return &UnmarshalInvalidArgError{reflect.TypeOf(v)} } - d.parse_value(pv.Elem()) + if !d.parse_value(pv.Elem()) { + d.throwSyntaxError(d.offset-1, errors.New("unexpected 'e'")) + } return nil } @@ -78,6 +80,13 @@ func check_for_int_parse_error(err error, offset int64) { } } +func (d *decoder) throwSyntaxError(offset int64, err error) { + panic(&SyntaxError{ + Offset: offset, + What: err, + }) +} + // called when 'i' was consumed func (d *decoder) parse_int(v reflect.Value) { start := d.offset - 1 -- 2.48.1