Skip to content

Commit 8b354dd

Browse files
committed
codec: fix regression from msgpack container len limit fix which failed compile on 32-bit machines
Fixes #433
1 parent fbab4b8 commit 8b354dd

3 files changed

Lines changed: 8 additions & 7 deletions

File tree

codec/msgpack.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ func (e *msgpackEncDriver[T]) writeContainerLen(ct msgpackContainerType, l int)
293293
} else if l < 65536 {
294294
e.w.writen1(ct.b16)
295295
e.w.writen2(bigen.PutUint16(uint16(l)))
296-
} else if l <= mpMaxLen {
296+
} else if uint(l) <= mpMaxLen {
297297
e.w.writen1(ct.b32)
298298
e.w.writen4(bigen.PutUint32(uint32(l)))
299299
} else {

codec/msgpack.mono.generated.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3353,7 +3353,7 @@ func (e *msgpackEncDriverBytes) writeContainerLen(ct msgpackContainerType, l int
33533353
} else if l < 65536 {
33543354
e.w.writen1(ct.b16)
33553355
e.w.writen2(bigen.PutUint16(uint16(l)))
3356-
} else if l <= mpMaxLen {
3356+
} else if uint(l) <= mpMaxLen {
33573357
e.w.writen1(ct.b32)
33583358
e.w.writen4(bigen.PutUint32(uint32(l)))
33593359
} else {
@@ -7369,7 +7369,7 @@ func (e *msgpackEncDriverIO) writeContainerLen(ct msgpackContainerType, l int) {
73697369
} else if l < 65536 {
73707370
e.w.writen1(ct.b16)
73717371
e.w.writen2(bigen.PutUint16(uint16(l)))
7372-
} else if l <= mpMaxLen {
7372+
} else if uint(l) <= mpMaxLen {
73737373
e.w.writen1(ct.b32)
73747374
e.w.writen4(bigen.PutUint32(uint32(l)))
73757375
} else {

codec/msgpack_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,14 +111,15 @@ func doTestMsgpackDecodeMapAndExtSizeMismatch(t *testing.T, h Handle) {
111111

112112
func doTestMsgpackIntOverflow(t *testing.T, h Handle) {
113113
defer testSetup(t, &h)()
114-
if cpu32Bit {
115-
t.Skip("test skipped on 32-bit machine")
116-
}
117114
if testing.Short() {
118115
t.Skip("skipping test in short mode")
119116
}
117+
if cpu32Bit {
118+
t.Skip("test skipped on 32-bit machine")
119+
}
120120
overflowString := "\xa7input_b\xd9\x12HACKER OVERWRITTEN"
121-
var sb = make([]byte, (1<<32)+len(overflowString)+64)
121+
var llen uint64 = (1 << 32) + 64 // prevent compile failure
122+
var sb = make([]byte, int(llen))
122123
copy(sb, overflowString)
123124
overflowString = stringView(sb)
124125
// sb.Grow((1 << 32) + len(overflowString) + 64)

0 commit comments

Comments
 (0)