cmd/gc: fix overflow in array bounds calculation.

Fixes #5609.

R=golang-dev, remyoudompheng, r
CC=golang-dev
https://golang.org/cl/9757045
This commit is contained in:
Daniel Morsing 2013-06-01 16:33:54 +02:00
parent 5b7d422a05
commit bf9a00bc8f
2 changed files with 17 additions and 4 deletions

View File

@ -420,12 +420,12 @@ reswitch:
goto error;
}
t->bound = mpgetfix(v.u.xval);
if(t->bound < 0) {
yyerror("array bound must be non-negative");
goto error;
} else if(doesoverflow(v, types[TINT])) {
if(doesoverflow(v, types[TINT])) {
yyerror("array bound is too large");
goto error;
} else if(t->bound < 0) {
yyerror("array bound must be non-negative");
goto error;
}
}
typecheck(&r, Etype);

View File

@ -0,0 +1,13 @@
// 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"