]> Cypherpunks repositories - gostls13.git/commitdiff
cc: fix an out of bounds array access
authorAnthony Martin <ality@pbrane.org>
Thu, 23 Feb 2012 19:28:16 +0000 (14:28 -0500)
committerRuss Cox <rsc@golang.org>
Thu, 23 Feb 2012 19:28:16 +0000 (14:28 -0500)
Alternatively, we could expand the ewidth array
in [568]c/txt.c to have NALLTYPES elements and
give all types above NTYPE a width of -1.

I don't think it's worth it since TDOT and TOLD
are the only two type values above NTYPE that
are passed to typ:

$ /tmp/cctypes
cc/dcl.c:683:  t->down = typ(TOLD, T);
cc/dcl.c:919:  return typ(TDOT, T);
$

Fixes #3063.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5694047

src/cmd/cc/sub.c

index e5992e213b9975247d4aec24bc99c093ecfbf67b..98e9f5a4b43fa50ce572e9fcda0ff813c7d85adb 100644 (file)
@@ -156,7 +156,10 @@ typ(int et, Type *d)
        t->link = d;
        t->down = T;
        t->sym = S;
-       t->width = ewidth[et];
+       if(et < NTYPE)
+               t->width = ewidth[et];
+       else
+               t->width = -1; // for TDOT or TOLD in prototype
        t->offset = 0;
        t->shift = 0;
        t->nbits = 0;