fix: Prevent int64 casts from corrupting record and block values

This commit is contained in:
Felicitas Pojtinger
2021-11-21 01:22:40 +01:00
parent a413ba8fa5
commit 43053d83b9
2 changed files with 14 additions and 12 deletions

View File

@@ -4,6 +4,7 @@ import (
"archive/tar"
"bufio"
"io"
"math"
"os"
"github.com/pojntfx/stfs/pkg/controllers"
@@ -62,9 +63,9 @@ var listCmd = &cobra.Command{
return err
}
nextTotalBlocks := curr / controllers.BlockSize
record = nextTotalBlocks / int64(viper.GetInt(recordSizeFlag))
block = nextTotalBlocks - (record * int64(viper.GetInt(recordSizeFlag)))
nextTotalBlocks := math.Ceil(float64((curr)) / float64(controllers.BlockSize))
record = int64(nextTotalBlocks) / int64(viper.GetInt(recordSizeFlag))
block = int64(nextTotalBlocks) - (record * int64(viper.GetInt(recordSizeFlag)))
if block > int64(viper.GetInt(recordSizeFlag)) {
record++
@@ -101,9 +102,9 @@ var listCmd = &cobra.Command{
return err
}
nextTotalBlocks := (curr + hdr.Size) / controllers.BlockSize
record = nextTotalBlocks / int64(viper.GetInt(recordSizeFlag))
block = nextTotalBlocks - (record * int64(viper.GetInt(recordSizeFlag)))
nextTotalBlocks := math.Ceil(float64((curr + hdr.Size)) / float64(controllers.BlockSize))
record = int64(nextTotalBlocks) / int64(viper.GetInt(recordSizeFlag))
block = int64(nextTotalBlocks) - (record * int64(viper.GetInt(recordSizeFlag)))
if block > int64(viper.GetInt(recordSizeFlag)) {
record++

View File

@@ -5,6 +5,7 @@ import (
"bufio"
"context"
"io"
"math"
"os"
"path/filepath"
@@ -77,9 +78,9 @@ var indexCmd = &cobra.Command{
return err
}
nextTotalBlocks := curr / controllers.BlockSize
record = nextTotalBlocks / int64(viper.GetInt(recordSizeFlag))
block = nextTotalBlocks - (record * int64(viper.GetInt(recordSizeFlag)))
nextTotalBlocks := math.Ceil(float64((curr)) / float64(controllers.BlockSize))
record = int64(nextTotalBlocks) / int64(viper.GetInt(recordSizeFlag))
block = int64(nextTotalBlocks) - (record * int64(viper.GetInt(recordSizeFlag)))
if block > int64(viper.GetInt(recordSizeFlag)) {
record++
@@ -120,9 +121,9 @@ var indexCmd = &cobra.Command{
return err
}
nextTotalBlocks := (curr + hdr.Size) / controllers.BlockSize
record = nextTotalBlocks / int64(viper.GetInt(recordSizeFlag))
block = nextTotalBlocks - (record * int64(viper.GetInt(recordSizeFlag)))
nextTotalBlocks := math.Ceil(float64((curr + hdr.Size)) / float64(controllers.BlockSize))
record = int64(nextTotalBlocks) / int64(viper.GetInt(recordSizeFlag))
block = int64(nextTotalBlocks) - (record * int64(viper.GetInt(recordSizeFlag)))
if block > int64(viper.GetInt(recordSizeFlag)) {
record++