From 739344679cfa946c43d45f31f8b39da32f5836b0 Mon Sep 17 00:00:00 2001 From: Garet Halliday <me@garet.holiday> Date: Thu, 12 Oct 2023 17:32:04 -0500 Subject: [PATCH] fix setting 0 length values to null --- hack/packetgen/templates/decode.tmpl | 6 +++++- lib/fed/packets/v3.0/packets.go | 30 +++++++++++++++++++++++----- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/hack/packetgen/templates/decode.tmpl b/hack/packetgen/templates/decode.tmpl index 90b1e929..41171023 100644 --- a/hack/packetgen/templates/decode.tmpl +++ b/hack/packetgen/templates/decode.tmpl @@ -85,7 +85,11 @@ if {{$lengthPointer}} == -1 { {{$pointer}} = nil } else { - {{$pointer}} = slices.Resize({{$pointer}}, int({{$lengthPointer}})) + if {{$pointer}} == nil { + {{$pointer}} = make([]{{template "type" (list $name $value.NullableLengthPrefixedSlice)}}, 0, int({{$lengthPointer}})) + } else { + {{$pointer}} = slices.Resize({{$pointer}}, int({{$lengthPointer}})) + } {{$indexPointer := temp -}} diff --git a/lib/fed/packets/v3.0/packets.go b/lib/fed/packets/v3.0/packets.go index 7bafb19b..5135a7ba 100644 --- a/lib/fed/packets/v3.0/packets.go +++ b/lib/fed/packets/v3.0/packets.go @@ -667,7 +667,11 @@ func (T *Bind) ReadFrom(decoder *fed.Decoder) (err error) { if temp27 == -1 { (*T).Parameters[temp26] = nil } else { - (*T).Parameters[temp26] = slices.Resize((*T).Parameters[temp26], int(temp27)) + if (*T).Parameters[temp26] == nil { + (*T).Parameters[temp26] = make([]uint8, 0, int(temp27)) + } else { + (*T).Parameters[temp26] = slices.Resize((*T).Parameters[temp26], int(temp27)) + } for temp28 := 0; temp28 < int(temp27); temp28++ { *(*uint8)(&((*T).Parameters[temp26][temp28])), err = decoder.Uint8() @@ -1335,7 +1339,11 @@ func (T *DataRow) ReadFrom(decoder *fed.Decoder) (err error) { if temp65 == -1 { (*T)[temp64] = nil } else { - (*T)[temp64] = slices.Resize((*T)[temp64], int(temp65)) + if (*T)[temp64] == nil { + (*T)[temp64] = make([]uint8, 0, int(temp65)) + } else { + (*T)[temp64] = slices.Resize((*T)[temp64], int(temp65)) + } for temp66 := 0; temp66 < int(temp65); temp66++ { *(*uint8)(&((*T)[temp64][temp66])), err = decoder.Uint8() @@ -1722,7 +1730,11 @@ func (T *FunctionCall) ReadFrom(decoder *fed.Decoder) (err error) { if temp85 == -1 { (*T).Arguments[temp84] = nil } else { - (*T).Arguments[temp84] = slices.Resize((*T).Arguments[temp84], int(temp85)) + if (*T).Arguments[temp84] == nil { + (*T).Arguments[temp84] = make([]uint8, 0, int(temp85)) + } else { + (*T).Arguments[temp84] = slices.Resize((*T).Arguments[temp84], int(temp85)) + } for temp86 := 0; temp86 < int(temp85); temp86++ { *(*uint8)(&((*T).Arguments[temp84][temp86])), err = decoder.Uint8() @@ -1839,7 +1851,11 @@ func (T *FunctionCallResponse) ReadFrom(decoder *fed.Decoder) (err error) { if temp95 == -1 { (*T) = nil } else { - (*T) = slices.Resize((*T), int(temp95)) + if (*T) == nil { + (*T) = make([]uint8, 0, int(temp95)) + } else { + (*T) = slices.Resize((*T), int(temp95)) + } for temp96 := 0; temp96 < int(temp95); temp96++ { *(*uint8)(&((*T)[temp96])), err = decoder.Uint8() @@ -2752,7 +2768,11 @@ func (T *SASLInitialResponse) ReadFrom(decoder *fed.Decoder) (err error) { if temp131 == -1 { (*T).InitialClientResponse = nil } else { - (*T).InitialClientResponse = slices.Resize((*T).InitialClientResponse, int(temp131)) + if (*T).InitialClientResponse == nil { + (*T).InitialClientResponse = make([]uint8, 0, int(temp131)) + } else { + (*T).InitialClientResponse = slices.Resize((*T).InitialClientResponse, int(temp131)) + } for temp132 := 0; temp132 < int(temp131); temp132++ { *(*uint8)(&((*T).InitialClientResponse[temp132])), err = decoder.Uint8() -- GitLab