From a20a5a9b0643a997d0e93ab3d9a10687c9758c86 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Fri, 31 Aug 2012 21:03:03 +0200 Subject: [PATCH] make them return booleans --- rawmsg.go | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/rawmsg.go b/rawmsg.go index 62d5e4bb..ca3f8f38 100644 --- a/rawmsg.go +++ b/rawmsg.go @@ -7,31 +7,49 @@ package dns // These raw* functions do not use reflection, they directly set the values // in the buffer. There are faster than their reflection counterparts. -// TODO: make them all return booleans - // RawSetId sets the message id in buf. -func rawSetId(msg []byte, i uint16) { +func rawSetId(msg []byte, i uint16) bool { + if len(msg) < 2 { + return false + } msg[0], msg[1] = packUint16(i) + return true } // rawSetQuestionLen sets the lenght of the question section. func rawSetQuestionLen(msg []byte, i uint16) { + if len(msg) < 6 { + return false + } msg[4], msg[5] = packUint16(i) + return true } // rawSetAnswerLen sets the lenght of the answer section. func rawSetAnswerLen(msg []byte, i uint16) { + if len(msg) < 8 { + return false + } msg[6], msg[7] = packUint16(i) + return true } // rawSetsNsLen sets the lenght of the authority section. func rawSetNsLen(msg []byte, i uint16) { + if len(msg) < 10 { + return false + } msg[8], msg[9] = packUint16(i) + return true } // rawSetExtraLen sets the lenght of the additional section. func rawSetExtraLen(msg []byte, i uint16) { + if len(msg) < 12 { + return false + } msg[10], msg[11] = packUint16(i) + return true } // rawSetRdlength sets the rdlength in the header of