From 11b08a75cd6b93473d0ab6e4b6a94247ee341a01 Mon Sep 17 00:00:00 2001 From: Cherry Mui Date: Fri, 15 Sep 2023 12:02:01 -0400 Subject: [PATCH] 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 LUCI-TryBot-Result: Go LUCI --- src/cmd/link/internal/ld/main.go | 7 +++++++ 1 file changed, 7 insertions(+) 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 { -- 2.51.0