mirror of
https://github.com/golang/go
synced 2024-09-04 23:44:16 +00:00
![Cherry Zhang](/assets/img/avatar_default.png)
CL 154057 adds guards agaist out-of-bound reads from readonly constants. It turns out that in dead code, the offset can also be negative. Guard against negative offset as well. Fixes #30257. Change-Id: I47c2a2e434dd466c08ae6f50f213999a358c796e Reviewed-on: https://go-review.googlesource.com/c/162819 Reviewed-by: Keith Randall <khr@golang.org>
36 lines
596 B
Go
36 lines
596 B
Go
// compile
|
|
|
|
// Copyright 2018 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package main
|
|
|
|
func f() {
|
|
var s string
|
|
var p, q bool
|
|
s = "a"
|
|
for p {
|
|
p = false == (true != q)
|
|
s = ""
|
|
}
|
|
_ = s == "bbb"
|
|
}
|
|
|
|
// Another case: load from negative offset of a symbol
|
|
// in dead code (issue 30257).
|
|
func g() {
|
|
var i int
|
|
var s string
|
|
|
|
if true {
|
|
s = "a"
|
|
}
|
|
|
|
if f := 0.0; -f < 0 {
|
|
i = len(s[:4])
|
|
}
|
|
|
|
_ = s[i-1:0] != "bb" && true
|
|
}
|