From 6836ba80ba7c69fb18945856e15d8e8569ce1031 Mon Sep 17 00:00:00 2001 From: Tom Thorogood Date: Mon, 6 Nov 2023 16:55:03 +1030 Subject: [PATCH] Eliminate tmp buffer from packOctetString (#1503) This is exactly the same change as #1429 but for packOctetString. I have no idea how I missed this given it's the very next function. Updates #1429 --- msg.go | 20 +++++++++----------- msg_helpers.go | 3 +-- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/msg.go b/msg.go index b05cf14e9..8294d0395 100644 --- a/msg.go +++ b/msg.go @@ -501,30 +501,28 @@ func packTxtString(s string, msg []byte, offset int) (int, error) { return offset, nil } -func packOctetString(s string, msg []byte, offset int, tmp []byte) (int, error) { - if offset >= len(msg) || len(s) > len(tmp) { +func packOctetString(s string, msg []byte, offset int) (int, error) { + if offset >= len(msg) || len(s) > 256*4+1 { return offset, ErrBuf } - bs := tmp[:len(s)] - copy(bs, s) - for i := 0; i < len(bs); i++ { + for i := 0; i < len(s); i++ { if len(msg) <= offset { return offset, ErrBuf } - if bs[i] == '\\' { + if s[i] == '\\' { i++ - if i == len(bs) { + if i == len(s) { break } // check for \DDD - if isDDD(bs[i:]) { - msg[offset] = dddToByte(bs[i:]) + if isDDD(s[i:]) { + msg[offset] = dddToByte(s[i:]) i += 2 } else { - msg[offset] = bs[i] + msg[offset] = s[i] } } else { - msg[offset] = bs[i] + msg[offset] = s[i] } offset++ } diff --git a/msg_helpers.go b/msg_helpers.go index 8582fc0ad..7d8ad48fd 100644 --- a/msg_helpers.go +++ b/msg_helpers.go @@ -461,8 +461,7 @@ func unpackStringOctet(msg []byte, off int) (string, int, error) { } func packStringOctet(s string, msg []byte, off int) (int, error) { - txtTmp := make([]byte, 256*4+1) - off, err := packOctetString(s, msg, off, txtTmp) + off, err := packOctetString(s, msg, off) if err != nil { return len(msg), err }