diff options
| -rw-r--r-- | pack_idx.go | 17 | ||||
| -rw-r--r-- | pack_midx.go | 18 | ||||
| -rw-r--r-- | pack_pack.go | 24 | ||||
| -rw-r--r-- | repo.go | 2 |
4 files changed, 3 insertions, 58 deletions
diff --git a/pack_idx.go b/pack_idx.go index a9cb9056..68170ad3 100644 --- a/pack_idx.go +++ b/pack_idx.go @@ -196,23 +196,6 @@ func (pi *packIndex) parse(buf []byte) error { pi.numObjects = nobj pi.names = buf[namesStart:namesEnd] pi.crcs = buf[crcStart:crcEnd] - - if len(buf) < 2*pi.repo.hashSize { - return ErrInvalidObject - } - idxChecksumStart := len(buf) - pi.repo.hashSize - idxChecksumInFile := buf[idxChecksumStart:] - - hashFn, ok := hashFuncs[pi.repo.hashSize] - if !ok { - return fmt.Errorf("furgit: unsupported hash size %d", pi.repo.hashSize) - } - - computedHash := hashFn(buf[:idxChecksumStart]) - if !bytes.Equal(computedHash.data[:pi.repo.hashSize], idxChecksumInFile) { - return fmt.Errorf("furgit: index checksum mismatch in %s", pi.idxRel) - } - return nil } diff --git a/pack_midx.go b/pack_midx.go index 04151dfe..748bdaf6 100644 --- a/pack_midx.go +++ b/pack_midx.go @@ -1,7 +1,6 @@ package furgit import ( - "bytes" "fmt" "os" "path/filepath" @@ -236,23 +235,6 @@ func (midx *multiPackIndex) parse(buf []byte) error { midx.oids = oids midx.offsets = offsets midx.largeOffs = largeOffs - - if len(buf) < midx.repo.hashSize { - return ErrInvalidObject - } - midxChecksumStart := len(buf) - midx.repo.hashSize - midxChecksumInFile := buf[midxChecksumStart:] - - hashFn, ok := hashFuncs[midx.repo.hashSize] - if !ok { - return fmt.Errorf("furgit: unsupported hash size %d", midx.repo.hashSize) - } - - computedHash := hashFn(buf[:midxChecksumStart]) - if !bytes.Equal(computedHash.data[:midx.repo.hashSize], midxChecksumInFile) { - return fmt.Errorf("furgit: multi-pack-index checksum mismatch") - } - return nil } diff --git a/pack_pack.go b/pack_pack.go index 6d740b73..5c2c8628 100644 --- a/pack_pack.go +++ b/pack_pack.go @@ -487,7 +487,7 @@ type packFile struct { closeMu sync.Once } -func openPackFile(absPath, rel string, hashSize int) (*packFile, error) { +func openPackFile(absPath, rel string) (*packFile, error) { f, err := os.Open(absPath) if err != nil { return nil, err @@ -498,7 +498,7 @@ func openPackFile(absPath, rel string, hashSize int) (*packFile, error) { _ = f.Close() return nil, err } - if stat.Size() < 12+int64(hashSize) { + if stat.Size() < 12 { _ = f.Close() return nil, ErrInvalidObject } @@ -532,26 +532,6 @@ func openPackFile(absPath, rel string, hashSize int) (*packFile, error) { _ = syscall.Munmap(region) return nil, err } - - if len(region) < hashSize { - _ = syscall.Munmap(region) - return nil, ErrInvalidObject - } - dataEnd := len(region) - hashSize - checksumInFile := region[dataEnd:] - - hashFn, ok := hashFuncs[hashSize] - if !ok { - _ = syscall.Munmap(region) - return nil, fmt.Errorf("furgit: unsupported hash size %d", hashSize) - } - - computedHash := hashFn(region[:dataEnd]) - if !bytes.Equal(computedHash.data[:hashSize], checksumInFile) { - _ = syscall.Munmap(region) - return nil, fmt.Errorf("furgit: pack checksum mismatch in %s", rel) - } - return &packFile{ relPath: rel, size: stat.Size(), @@ -132,7 +132,7 @@ func (repo *Repository) packFile(rel string) (*packFile, error) { if pf, ok := repo.packFiles.Load(rel); ok { return pf.(*packFile), nil } - pf, err := openPackFile(repo.repoPath(rel), rel, repo.hashSize) + pf, err := openPackFile(repo.repoPath(rel), rel) if err != nil { return nil, err } |
