]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/5g, cmd/6g, cmd/8g, cmd/9g: clear Addr parameter in sudoaddable
authorShenghou Ma <minux@golang.org>
Thu, 5 Feb 2015 04:38:45 +0000 (23:38 -0500)
committerMinux Ma <minux@golang.org>
Mon, 9 Feb 2015 01:56:16 +0000 (01:56 +0000)
The Addr might be a stack variable with uninitialized fields.

Fixes #9777.

Change-Id: I799786e3d8b2e17e069725bc66a076cf9ca11f93
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/3932
Reviewed-by: Dave Cheney <dave@cheney.net>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/5g/gsubr.c
src/cmd/6g/gsubr.c
src/cmd/8g/gsubr.c
src/cmd/9g/gsubr.c

index ef5a5091476df69b82af34075941ad3d66a335ed..dbcfc233bed6b22051644d0d1e4ac62366966dfa 100644 (file)
@@ -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))
index 697016c6f3fba6e5d46e996d9cbf4be84213ed26..51409e467b30c67bcbc6e19000ade03b0e4219e0 100644 (file)
@@ -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))
index dd75e9f092a6921f77b6d997fa211c42d4db3d11..af1963f9807fc313b79436b2c6f2d97a5183c059 100644 (file)
@@ -2398,7 +2398,7 @@ sudoaddable(int as, Node *n, Addr *a)
 {
        USED(as);
        USED(n);
-       USED(a);
 
+       memset(a, 0, sizeof *a);
        return 0;
 }
index 49f184d51ee3900f10141f8b99ae584954983713..073324ee12143932d85adbbe77b9012e80e2b9fa 100644 (file)
@@ -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;
 }