From b639fa305d71b2f3c9a19d20e186beee16408b0c Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Sun, 29 Jan 2012 19:11:55 +0100 Subject: [PATCH] Fix overflow when the buffer is really small --- msg.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/msg.go b/msg.go index f629af98..93bbc80a 100644 --- a/msg.go +++ b/msg.go @@ -806,8 +806,12 @@ func unpackStructValue(val reflect.Value, msg []byte, off int) (off1 int, ok boo // Work because of rfc4034, section 3.17 consumed += len(val.FieldByName("SignerName").String()) + 1 default: - consumed = 0 // TODO + consumed = 0 // TODO, maybe error? } + if off+rdlength-consumed > lenmsg { + println("dns: failure unpacking base64") + return lenmsg, false + } s = unpackBase64(msg[off : off+rdlength-consumed]) off += rdlength - consumed case "cdomain-name":