Mercurial > hg > index.cgi
diff lwlink/output.c @ 425:9f0448022f1f
Fix address overflows in SREC and IHEX file formats
Thanks to hider <stego@satx.rr.com> for pointing out an overflow that caused
16 bit addresses to be output as 5 hex digits in cases where an address
counter wrapped. Simply mask the addresses down to 16 bits.
author | William Astle <lost@l-w.ca> |
---|---|
date | Thu, 03 Nov 2016 21:36:17 -0600 |
parents | 55c1f9a321e9 |
children | 1744f2d1a821 |
line wrap: on
line diff
--- a/lwlink/output.c Thu Sep 22 19:26:04 2016 -0600 +++ b/lwlink/output.c Thu Nov 03 21:36:17 2016 -0600 @@ -198,7 +198,7 @@ recdlen = (SRECLEN>remainingcodebytes)?remainingcodebytes:SRECLEN; recsum = recdlen + 3; codeaddr = recaddr - sectlist[sn].ptr -> loadaddress; - fprintf(of, "S1%02X%04X", recdlen + 3, recaddr); + fprintf(of, "S1%02X%04X", recdlen + 3, recaddr & 0xffff); for (i = 0; i < recdlen; i++) { fprintf(of, "%02X", sectcode[codeaddr+i]);