From e8315e426adadf50aec743ab0134ddae29ec2170 Mon Sep 17 00:00:00 2001 From: jesusc Date: Fri, 20 Sep 2002 17:25:51 +0000 Subject: [PATCH] added boundary check before using dram[] array. git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2106 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- as/mcs51/lklist.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/as/mcs51/lklist.c b/as/mcs51/lklist.c index 680a2d4a..5a1a7fe8 100644 --- a/as/mcs51/lklist.c +++ b/as/mcs51/lklist.c @@ -1212,10 +1212,10 @@ int summary(struct area * areap) } for(j=0; j<7; j++) - for(k=Ram[j].Start; k<(Ram[j].Start+Ram[j].Size); k++) + for(k=Ram[j].Start; (k<(Ram[j].Start+Ram[j].Size))&&(k<0x100); k++) dram[k]|=Ram[j].flag; /*Mark as used*/ - for(k=IRam.Start; k<(IRam.Start+IRam.Size); k++) + for(k=IRam.Start; (k<(IRam.Start+IRam.Size))&&(k<0x100); k++) dram[k]|=IRam.flag; /*Mark as used*/ /*Compute the amount of unused memory in direct data Ram. This is the @@ -1251,7 +1251,7 @@ int summary(struct area * areap) } } - for(k=Ram[6].Start; k<(Ram[6].Start+Ram[6].Size); k++) + for(k=Ram[6].Start; (k<(Ram[6].Start+Ram[6].Size))&&(k<0x100); k++) { if(dram[k]!=Ram[6].flag) { @@ -1261,11 +1261,11 @@ int summary(struct area * areap) } } - if(Ram[7].Size>0x80) + if((Ram[6].Start+Ram[6].Size)>0x80) { sprintf(buff, "*** ERROR: Insuficient DRAM memory. " - "%d byte%s short.\n", Ram[7].Size-0x80, - ((Ram[7].Size-0x80)==1)?"":"s"); + "%d byte%s short.\n", (Ram[6].Start+Ram[6].Size)-0x80, + ((Ram[6].Start+Ram[6].Size)==1)?"":"s"); REPORT_ERROR(buff); } -- 2.47.2