mirror of https://github.com/golang/go.git
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:
parent
5b7d422a05
commit
bf9a00bc8f
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
Loading…
Reference in New Issue