aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
authorRobert Griesemer <gri@google.com>2026-03-30 12:27:31 -0700
committerGopher Robot <gobot@golang.org>2026-03-30 13:36:41 -0700
commited3ec75df47ab8e7d6e4a30c445a8ef771382584 (patch)
tree3fcedc8fc366052dda1403c782fd10bfbcbb7dd7 /src/cmd
parenta4b534f5e42fe58d58c0ff0562d76680cedb0466 (diff)
downloadgo-ed3ec75df47ab8e7d6e4a30c445a8ef771382584.tar.xz
go/types, types2: report an error if constant string overflows
Set a limit of 10 GiB for strings obtained via constant string addition. Fixes #78346. Change-Id: I35dbdff94f3ed32bf69654f4b3da435dad9f6236 Reviewed-on: https://go-review.googlesource.com/c/go/+/761300 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Robert Griesemer <gri@google.com> Reviewed-by: Mark Freeman <markfreeman@google.com> Reviewed-by: Robert Griesemer <gri@google.com> Reviewed-by: Jakub Ciolek <jakub@ciolek.dev>
Diffstat (limited to 'src/cmd')
-rw-r--r--src/cmd/compile/internal/types2/const.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/types2/const.go b/src/cmd/compile/internal/types2/const.go
index 74f45a6e8b..096187f515 100644
--- a/src/cmd/compile/internal/types2/const.go
+++ b/src/cmd/compile/internal/types2/const.go
@@ -46,6 +46,14 @@ func (check *Checker) overflow(x *operand, opPos syntax.Pos) {
}
check.errorf(atPos(opPos), InvalidConstVal, "constant %soverflow", op)
x.val = constant.MakeUnknown()
+ return
+ }
+
+ const maxLen = 10 * 1024 * 1024
+ if x.val.Kind() == constant.String && len(constant.StringVal(x.val)) > maxLen {
+ check.error(atPos(opPos), InvalidConstVal, "constant string too long")
+ x.val = constant.MakeUnknown()
+ return
}
}