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]);