mirror of
https://github.com/golang/go
synced 2024-10-02 22:25:08 +00:00
cmd/internal/buildid: reject empty id
The loop that makes progress assumes that after matching an id you should advance len(id) bytes in the file. If id is the empty string, then it will match and advance 0 bytes repeatedly. 0-byte ids are not really build IDs, so just reject it outright. Fixes #47852. Change-Id: Ie44a3a51dec22e2f68fb72d54ead91be98000cfe Reviewed-on: https://go-review.googlesource.com/c/go/+/344049 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Michael Knyszek <mknyszek@google.com> TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
parent
f67e31d643
commit
835ff47c16
|
@ -177,3 +177,11 @@ func TestExcludedReader(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestEmptyID(t *testing.T) {
|
||||
r := strings.NewReader("aha!")
|
||||
matches, hash, err := FindAndHash(r, "", 1000)
|
||||
if matches != nil || hash != ([32]byte{}) || err == nil || !strings.Contains(err.Error(), "no id") {
|
||||
t.Errorf("FindAndHash: want nil, [32]byte{}, no id specified, got %v, %v, %v", matches, hash, err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,6 +22,9 @@ func FindAndHash(r io.Reader, id string, bufSize int) (matches []int64, hash [32
|
|||
if bufSize == 0 {
|
||||
bufSize = 31 * 1024 // bufSize+little will likely fit in 32 kB
|
||||
}
|
||||
if len(id) == 0 {
|
||||
return nil, [32]byte{}, fmt.Errorf("buildid.FindAndHash: no id specified")
|
||||
}
|
||||
if len(id) > bufSize {
|
||||
return nil, [32]byte{}, fmt.Errorf("buildid.FindAndHash: buffer too small")
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue