From 5eb9e0621bec9f0253da5475cc27b50bfeb770a8 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Fri, 19 Sep 2008 09:39:09 -0700 Subject: [PATCH] avoid dereferencing nil type on undefined name. R=ken DELTA=12 (12 added, 0 deleted, 0 changed) OCL=15506 CL=15528 --- src/cmd/gc/walk.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c index ecdb4dd7f7..300b78cea8 100644 --- a/src/cmd/gc/walk.c +++ b/src/cmd/gc/walk.c @@ -915,6 +915,8 @@ loop: case ONOT: case OANDAND: case OOROR: + if(n->left->type == T) + goto ret; et = n->left->type->etype; if(et != TBOOL) goto badt; @@ -923,6 +925,8 @@ loop: case OEQ: case ONE: + if(n->left->type == T) + goto ret; et = n->left->type->etype; if(!okforeq[et]) goto badt; @@ -933,6 +937,8 @@ loop: case OLE: case OGE: case OGT: + if(n->left->type == T) + goto ret; et = n->left->type->etype; if(!okforadd[et]) if(!isptrto(n->left->type, TSTRING)) @@ -945,12 +951,16 @@ loop: case OMUL: case ODIV: case OPLUS: + if(n->left->type == T) + goto ret; et = n->left->type->etype; if(!okforadd[et]) goto badt; break; case OMINUS: + if(n->left->type == T) + goto ret; et = n->left->type->etype; if(!okforadd[et]) goto badt; @@ -974,6 +984,8 @@ loop: case OXOR: case OMOD: case OCOM: + if(n->left->type == T) + goto ret; et = n->left->type->etype; if(!okforand[et]) goto badt; -- 2.48.1