Skip to content

Commit de6c03d

Browse files
committed
amend the CidFromReader slice extension math
The append+make slice extension idiom works, but note that append uses the slice's length as its base. We need to append the number of bytes required for length to reach cidLength, not the capacity. The added test case panicked before this change, and works now: --- FAIL: TestReadCidsFromBuffer (0.00s) panic: runtime error: slice bounds out of range [:73] with capacity 64 [recovered] panic: runtime error: slice bounds out of range [:73] with capacity 64 goroutine 37 [running]: testing.tRunner.func1.2({0x570d60, 0xc000016438}) testing/testing.go:1203 +0x24e testing.tRunner.func1() testing/testing.go:1206 +0x218 panic({0x570d60, 0xc000016438}) runtime/panic.go:1038 +0x215 github.com/ipfs/go-cid.CidFromReader({0x5b0e20, 0xc000010900}) github.com/ipfs/go-cid/cid.go:803 +0x75f github.com/ipfs/go-cid.TestReadCidsFromBuffer(0xc00014ba00) github.com/ipfs/go-cid/cid_test.go:710 +0x625 testing.tRunner(0xc00014ba00, 0x58af38) testing/testing.go:1253 +0x102 created by testing.(*T).Run testing/testing.go:1300 +0x35a exit status 2 FAIL github.com/ipfs/go-cid 0.004s
1 parent c4c8760 commit de6c03d

File tree

2 files changed

+2
-1
lines changed

2 files changed

+2
-1
lines changed

cid.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -793,7 +793,7 @@ func CidFromReader(r io.Reader) (int, Cid, error) {
793793
if cidLength > cap(br.dst) {
794794
// If the multihash digest doesn't fit in our initial 64 bytes,
795795
// efficiently extend the slice via append+make.
796-
br.dst = append(br.dst, make([]byte, cidLength-cap(br.dst))...)
796+
br.dst = append(br.dst, make([]byte, cidLength-len(br.dst))...)
797797
} else {
798798
// The multihash digest fits inside our buffer,
799799
// so just extend its capacity.

cid_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -667,6 +667,7 @@ func TestReadCidsFromBuffer(t *testing.T) {
667667
"k2cwueckqkibutvhkr4p2ln2pjcaxaakpd9db0e7j7ax1lxhhxy3ekpv",
668668
"Qmf5Qzp6nGBku7CEn2UQx4mgN8TW69YUok36DrGa6NN893",
669669
"zb2rhZi1JR4eNc2jBGaRYJKYM8JEB4ovenym8L1CmFsRAytkz",
670+
"bafkqarjpmzuwyzltorxxezjpkvcfgqkfjfbfcvslivje2vchkzdu6rckjjcfgtkolaze6mssjqzeyn2ekrcfatkjku2vowseky3fswkfkm2deqkrju3e2",
670671
}
671672

672673
var cids []Cid

0 commit comments

Comments
 (0)