From f4767f1e5498770e6b8f930398cd2dff2f681609 Mon Sep 17 00:00:00 2001 From: Gregory Oschwald Date: Tue, 31 Dec 2024 12:25:49 -0800 Subject: [PATCH 1/2] Halt test on error --- reader_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reader_test.go b/reader_test.go index 496437a..dab06c1 100644 --- a/reader_test.go +++ b/reader_test.go @@ -823,7 +823,7 @@ func BenchmarkOpen(b *testing.B) { for i := 0; i < b.N; i++ { db, err = Open("GeoLite2-City.mmdb") if err != nil { - b.Error(err) + b.Fatal(err) } } assert.NotNil(b, db) From c06679525eab07f5cb7c36a8c627a7a97f21fd41 Mon Sep 17 00:00:00 2001 From: Gregory Oschwald Date: Tue, 31 Dec 2024 12:26:09 -0800 Subject: [PATCH 2/2] Prevent overflow for large db on 32-bit CPU The record size is always divisible by 4. --- reader.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reader.go b/reader.go index c52dedc..6bc4d47 100644 --- a/reader.go +++ b/reader.go @@ -65,7 +65,7 @@ func FromBytes(buffer []byte) (*Reader, error) { return nil, err } - searchTreeSize := metadata.NodeCount * metadata.RecordSize / 4 + searchTreeSize := metadata.NodeCount * (metadata.RecordSize / 4) dataSectionStart := searchTreeSize + dataSectionSeparatorSize dataSectionEnd := uint(metadataStart - len(metadataStartMarker)) if dataSectionStart > dataSectionEnd {