Commit bf9a00bc authored by Daniel Morsing's avatar Daniel Morsing

cmd/gc: fix overflow in array bounds calculation.

Fixes #5609.

R=golang-dev, remyoudompheng, r
CC=golang-dev
https://golang.org/cl/9757045
parent 5b7d422a
...@@ -420,12 +420,12 @@ reswitch: ...@@ -420,12 +420,12 @@ reswitch:
goto error; goto error;
} }
t->bound = mpgetfix(v.u.xval); t->bound = mpgetfix(v.u.xval);
if(t->bound < 0) { if(doesoverflow(v, types[TINT])) {
yyerror("array bound must be non-negative");
goto error;
} else if(doesoverflow(v, types[TINT])) {
yyerror("array bound is too large"); yyerror("array bound is too large");
goto error; goto error;
} else if(t->bound < 0) {
yyerror("array bound must be non-negative");
goto error;
} }
} }
typecheck(&r, Etype); typecheck(&r, Etype);
......
// errorcheck
// Copyright 2013 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.
// issue 5609: overflow when calculating array size
package pkg
const Large uint64 = 18446744073709551615
var foo [Large]uint64 // ERROR "array bound is too large"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment