aboutsummaryrefslogtreecommitdiff
path: root/format/commitgraph/bloom/settings.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-06 08:05:51 +0800
committerGravatar Runxi Yu2026-03-06 10:00:35 +0800
commite15054a4f93fc54806e84aa7036e60168e78e823 (patch)
treeb576dcb1d3368324e7ca73ca0fe79dd8865c5524 /format/commitgraph/bloom/settings.go
parentinternal/intconv: Add Uint32ToUint8 (diff)
signatureNo signature
format/commitgraph: Add initial commit-graph support
Diffstat (limited to 'format/commitgraph/bloom/settings.go')
-rw-r--r--format/commitgraph/bloom/settings.go21
1 files changed, 20 insertions, 1 deletions
diff --git a/format/commitgraph/bloom/settings.go b/format/commitgraph/bloom/settings.go
index 5aa122a9..764653bd 100644
--- a/format/commitgraph/bloom/settings.go
+++ b/format/commitgraph/bloom/settings.go
@@ -1,6 +1,10 @@
package bloom
-import "encoding/binary"
+import (
+ "encoding/binary"
+
+ "codeberg.org/lindenii/furgit/internal/intconv"
+)
// Settings describe the changed-paths Bloom filter parameters stored in
// commit-graph BDAT chunks.
@@ -27,5 +31,20 @@ func ParseSettings(bdat []byte) (*Settings, error) {
MaxChangePaths: DefaultMaxChange,
}
+ switch settings.HashVersion {
+ case 1, 2:
+ default:
+ return nil, ErrInvalid
+ }
+
+ if settings.NumHashes == 0 {
+ return nil, ErrInvalid
+ }
+
+ _, err := intconv.Uint32ToInt(settings.NumHashes)
+ if err != nil {
+ return nil, ErrInvalid
+ }
+
return settings, nil
}