From d9fb582cb9748e2f98e4ddb0471bdb037ea4f050 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 26 Jun 2015 20:18:06 +0200 Subject: Boundary check --- ber/obj.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'ber') diff --git a/ber/obj.go b/ber/obj.go index f2e76d1..a8b590e 100644 --- a/ber/obj.go +++ b/ber/obj.go @@ -2,7 +2,7 @@ package ber func base128(n int) (b []byte) { if n == 0 { - return []byte{0x00} + return []byte{0} } l := 0 for i := n; i > 0; i >>= 7 { @@ -24,6 +24,12 @@ func debase128(b []byte) int { } func marshalObj(obj []int) (b []byte) { + if len(obj) < 2 { + return []byte{} + } + if obj[0] < 2 && obj[1] > 39 { + return []byte{} + } first := obj[0]*40 + obj[1] b = append(b, base128(first)...) for _, o := range obj[2:] { -- cgit v1.2.3