liblink: check for symgrow size too large

Many calls to symgrow pass a vlong value.  Change the function
to not implicitly truncate, and to instead give an error if
the value is too large.

R=golang-codereviews, gobot, rsc
CC=golang-codereviews
https://golang.org/cl/54010043
This commit is contained in:
Ian Lance Taylor 2014-01-21 06:12:54 -08:00
parent cb133c6607
commit 6111dc4e71
2 changed files with 8 additions and 2 deletions

View File

@ -500,7 +500,7 @@ vlong setuint32(Link *ctxt, LSym *s, vlong r, uint32 v);
vlong setuint64(Link *ctxt, LSym *s, vlong r, uint64 v);
vlong setuint8(Link *ctxt, LSym *s, vlong r, uint8 v);
vlong setuintxx(Link *ctxt, LSym *s, vlong off, uint64 v, vlong wid);
void symgrow(Link *ctxt, LSym *s, int32 siz);
void symgrow(Link *ctxt, LSym *s, vlong siz);
// go.c
void double2ieee(uint64 *ieee, double native);

View File

@ -41,10 +41,16 @@ mangle(char *file)
}
void
symgrow(Link *ctxt, LSym *s, int32 siz)
symgrow(Link *ctxt, LSym *s, vlong lsiz)
{
int32 siz;
USED(ctxt);
siz = (int32)lsiz;
if((vlong)siz != lsiz)
sysfatal("symgrow size %lld too long", lsiz);
if(s->np >= siz)
return;