2017-04-21 06:55:53 +00:00
|
|
|
package proc
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
2020-03-10 16:34:40 +00:00
|
|
|
"unsafe"
|
2017-04-21 06:55:53 +00:00
|
|
|
)
|
|
|
|
|
2020-03-10 16:34:40 +00:00
|
|
|
func ptrSizeByRuntimeArch() int {
|
|
|
|
return int(unsafe.Sizeof(uintptr(0)))
|
|
|
|
}
|
|
|
|
|
2017-04-21 06:55:53 +00:00
|
|
|
func TestIssue554(t *testing.T) {
|
|
|
|
// unsigned integer overflow in proc.(*memCache).contains was
|
|
|
|
// causing it to always return true for address 0xffffffffffffffff
|
2018-04-14 12:57:35 +00:00
|
|
|
mem := memCache{true, 0x20, make([]byte, 100), nil}
|
2020-03-10 16:34:40 +00:00
|
|
|
var addr uint64
|
|
|
|
switch ptrSizeByRuntimeArch() {
|
|
|
|
case 4:
|
|
|
|
addr = 0xffffffff
|
|
|
|
case 8:
|
|
|
|
addr = 0xffffffffffffffff
|
|
|
|
}
|
|
|
|
if mem.contains(uintptr(addr), 40) {
|
2017-04-21 06:55:53 +00:00
|
|
|
t.Fatalf("should be false")
|
|
|
|
}
|
|
|
|
}
|