From: Matt Joiner Date: Sun, 23 Aug 2015 07:45:59 +0000 (+1000) Subject: bencode: Don't allow extraneous trailing 'e's X-Git-Tag: v1.0.0~1053 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=2ccbaa4e79e3085850018bda760b58fd4d071fb3;p=btrtrc.git bencode: Don't allow extraneous trailing 'e's --- 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