aboutsummaryrefslogtreecommitdiff
path: root/weed/command/fix.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/command/fix.go')
-rw-r--r--weed/command/fix.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/weed/command/fix.go b/weed/command/fix.go
index 2b7b425f3..34dee3732 100644
--- a/weed/command/fix.go
+++ b/weed/command/fix.go
@@ -162,6 +162,18 @@ func doFixOneVolume(basepath string, baseFileName string, collection string, vol
defer nm.Close()
defer nmDeleted.Close()
+ // Validate volumeId range before converting to uint32
+ if volumeId < 0 || volumeId > 0xFFFFFFFF {
+ err := fmt.Errorf("volume ID out of range: %d", volumeId)
+ if *fixIgnoreError {
+ glog.Error(err)
+ return
+ } else {
+ glog.Fatal(err)
+ }
+ }
+ // lgtm[go/incorrect-integer-conversion]
+ // Safe conversion: volumeId has been validated to be in range [0, 0xFFFFFFFF] above
vid := needle.VolumeId(volumeId)
scanner := &VolumeFileScanner4Fix{
nm: nm,