diff options
| author | Cherry Mui <cherryyz@google.com> | 2023-09-15 12:02:01 -0400 |
|---|---|---|
| committer | Cherry Mui <cherryyz@google.com> | 2023-09-15 17:22:06 +0000 |
| commit | 11b08a75cd6b93473d0ab6e4b6a94247ee341a01 (patch) | |
| tree | 0d5ecb9121f5386c6ddd2423d0a7b0b94a73bedf /src/cmd/link | |
| parent | 5914f6a482ce9e178cdc199ec3ec1719b6049f60 (diff) | |
| download | go-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.go | 7 |
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 { |
