diff options
Diffstat (limited to 'weed/command/fix.go')
| -rw-r--r-- | weed/command/fix.go | 12 |
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, |
