aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/link
diff options
context:
space:
mode:
authorCherry Mui <cherryyz@google.com>2023-09-15 12:02:01 -0400
committerCherry Mui <cherryyz@google.com>2023-09-15 17:22:06 +0000
commit11b08a75cd6b93473d0ab6e4b6a94247ee341a01 (patch)
tree0d5ecb9121f5386c6ddd2423d0a7b0b94a73bedf /src/cmd/link
parent5914f6a482ce9e178cdc199ec3ec1719b6049f60 (diff)
downloadgo-11b08a75cd6b93473d0ab6e4b6a94247ee341a01.tar.xz
cmd/link: reject invalid -R flag
Reject -R value that is not a power of 2, or less than 4K. Fixes #62660. Change-Id: I3fa33c23c25311a93c0accc9acbd1e465789b8c9 Reviewed-on: https://go-review.googlesource.com/c/go/+/528715 Reviewed-by: David Chase <drchase@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'src/cmd/link')
-rw-r--r--src/cmd/link/internal/ld/main.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/cmd/link/internal/ld/main.go b/src/cmd/link/internal/ld/main.go
index b978cfc7d4..589b5065fd 100644
--- a/src/cmd/link/internal/ld/main.go
+++ b/src/cmd/link/internal/ld/main.go
@@ -236,6 +236,13 @@ func Main(arch *sys.Arch, theArch Arch) {
Exitf("dynamic linking required on %s; -d flag cannot be used", buildcfg.GOOS)
}
+ isPowerOfTwo := func(n int64) bool {
+ return n > 0 && n&(n-1) == 0
+ }
+ if *FlagRound != -1 && (*FlagRound < 4096 || !isPowerOfTwo(*FlagRound)) {
+ Exitf("invalid -R value 0x%x", *FlagRound)
+ }
+
checkStrictDups = *FlagStrictDups
switch flagW {