diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2020-02-02 23:11:21 -0500 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2020-02-02 23:11:21 -0500 |
commit | 1e253b011f916544879ab3a2d3060c2e982a0c9d (patch) | |
tree | c96b1de5d159b9b4a29ba22e00e6f45d2fd1a037 /rrdformat/rrdbinary/decode.go | |
parent | b3d7493f5e8b20378ec2e41a10459e4339d538e9 (diff) |
rrdbinary: Decode CDEF RPN tokens crammed in to Unival parameters
Diffstat (limited to 'rrdformat/rrdbinary/decode.go')
-rw-r--r-- | rrdformat/rrdbinary/decode.go | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/rrdformat/rrdbinary/decode.go b/rrdformat/rrdbinary/decode.go index 08c9141..c4f7760 100644 --- a/rrdformat/rrdbinary/decode.go +++ b/rrdformat/rrdbinary/decode.go @@ -251,6 +251,9 @@ func (obj *Unival) unmarshalRRD(d *Decoder, tag string) error { if d.arch.UnivalWidth != 8 { return archErrorf("rrdbinary does not support UnivalWidth=%d; only supports 8", d.arch.UnivalWidth) } + if d.arch.ShortWidth != 2 && d.arch.ShortWidth != 4 { + return archErrorf("rrdbinary does not support ShortWidth=%d; only supports 2 or 4", d.arch.ShortWidth) + } if tag != "" { return typeErrorf("invalid rrdbinary struct tag for unival: %q", tag) } @@ -270,7 +273,10 @@ func (obj *Unival) unmarshalRRD(d *Decoder, tag string) error { return d.binErrorf(d.arch.UnivalWidth, "unexpected end-of-file in %d-byte unival", d.arch.UnivalWidth) } - *obj = Unival(d.arch.ByteOrder.Uint64(data)) + *obj = Unival{ + arch: d.arch, + data: data, + } d.pos += padding + d.arch.UnivalWidth return nil } |