]> git.gag.com Git - fw/sdcc/commitdiff
added boundary check before using dram[] array.
authorjesusc <jesusc@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 20 Sep 2002 17:25:51 +0000 (17:25 +0000)
committerjesusc <jesusc@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 20 Sep 2002 17:25:51 +0000 (17:25 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2106 4a8a32a2-be11-0410-ad9d-d568d2c75423

as/mcs51/lklist.c

index 680a2d4a62482aebf3f238ab8e23bf6fdf03eb89..5a1a7fe8675f7364fed1368195db4713bd8bff78 100644 (file)
@@ -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);
        }