From d00e08cc2d6f8fd4702c9f024c819ea07bc69a39 Mon Sep 17 00:00:00 2001 From: yanghonggang Date: Mon, 28 Jul 2025 11:53:52 +0800 Subject: [PATCH] fix(blobstore): include cap check in alloc tests and reject size <= 0 close #3868 Signed-off-by: yanghonggang --- blobstore/util/bytespool/pool.go | 2 +- blobstore/util/bytespool/pool_test.go | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/blobstore/util/bytespool/pool.go b/blobstore/util/bytespool/pool.go index d5e4d58f9..3db966dd6 100644 --- a/blobstore/util/bytespool/pool.go +++ b/blobstore/util/bytespool/pool.go @@ -47,7 +47,7 @@ func init() { // GetPool returns a sync.Pool that generates bytes slice with the size. // Return nil if no such pool exists. func GetPool(size int) *sync.Pool { - if size < 0 || size > maxSize { + if size <= 0 || size > maxSize { return nil } bits := msb(size) diff --git a/blobstore/util/bytespool/pool_test.go b/blobstore/util/bytespool/pool_test.go index 9ff26f7d1..2e3bee760 100644 --- a/blobstore/util/bytespool/pool_test.go +++ b/blobstore/util/bytespool/pool_test.go @@ -23,13 +23,13 @@ import ( func TestUtilBytespool(t *testing.T) { run := func(size int) { buff := bytespool.Alloc(size) - if len(buff) != size { + if len(buff) != size || cap(buff) != size { t.Fatal(size) } bytespool.Zero(buff) bytespool.Free(buff) bp := bytespool.AllocPointer(size) - if len(*bp) != size { + if len(*bp) != size || cap(*bp) != size { t.Fatal(size) } bytespool.FreePointer(bp) @@ -54,6 +54,7 @@ func TestUtilBytespool(t *testing.T) { for bits := range [27]struct{}{} { run(1 << bits) } + bytespool.Free(nil) bytespool.FreePointer(nil) }