From: Shenghou Ma Date: Thu, 5 Feb 2015 04:38:45 +0000 (-0500) Subject: cmd/5g, cmd/6g, cmd/8g, cmd/9g: clear Addr parameter in sudoaddable X-Git-Tag: go1.5beta1~2082 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=2978ebbc7b087f831826f2a802248b9565d99ca6;p=gostls13.git cmd/5g, cmd/6g, cmd/8g, cmd/9g: clear Addr parameter in sudoaddable The Addr might be a stack variable with uninitialized fields. Fixes #9777. Change-Id: I799786e3d8b2e17e069725bc66a076cf9ca11f93 Signed-off-by: Shenghou Ma Reviewed-on: https://go-review.googlesource.com/3932 Reviewed-by: Dave Cheney Reviewed-by: Keith Randall --- diff --git a/src/cmd/5g/gsubr.c b/src/cmd/5g/gsubr.c index ef5a509147..dbcfc233be 100644 --- a/src/cmd/5g/gsubr.c +++ b/src/cmd/5g/gsubr.c @@ -1812,6 +1812,8 @@ sudoaddable(int as, Node *n, Addr *a, int *w) if(n->type == T) return 0; + memset(a, 0, sizeof *a); + switch(n->op) { case OLITERAL: if(!isconst(n, CTINT)) diff --git a/src/cmd/6g/gsubr.c b/src/cmd/6g/gsubr.c index 697016c6f3..51409e467b 100644 --- a/src/cmd/6g/gsubr.c +++ b/src/cmd/6g/gsubr.c @@ -1966,6 +1966,8 @@ sudoaddable(int as, Node *n, Addr *a) if(n->type == T) return 0; + memset(a, 0, sizeof *a); + switch(n->op) { case OLITERAL: if(!isconst(n, CTINT)) diff --git a/src/cmd/8g/gsubr.c b/src/cmd/8g/gsubr.c index dd75e9f092..af1963f980 100644 --- a/src/cmd/8g/gsubr.c +++ b/src/cmd/8g/gsubr.c @@ -2398,7 +2398,7 @@ sudoaddable(int as, Node *n, Addr *a) { USED(as); USED(n); - USED(a); + memset(a, 0, sizeof *a); return 0; } diff --git a/src/cmd/9g/gsubr.c b/src/cmd/9g/gsubr.c index 49f184d51e..073324ee12 100644 --- a/src/cmd/9g/gsubr.c +++ b/src/cmd/9g/gsubr.c @@ -1700,6 +1700,7 @@ int sudoaddable(int as, Node *n, Addr *a) { // TODO(minux) - USED(as); USED(n); USED(a); + USED(as); USED(n); + memset(a, 0, sizeof *a); return 0; }