From fcb25f5dc8a88f3ff1b5505c92ac2a056ccdb120 Mon Sep 17 00:00:00 2001 From: Frank Voorburg Date: Tue, 15 Nov 2016 08:49:56 +0000 Subject: [PATCH] Refs #165. - Added protection against zero division. git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@182 5dc33758-31d5-4daf-9ae8-b24bf3d40d73 --- .../interfaces/uart/XcpTransport.pas | 43 +++++++++--------- Host/openblt_uart.dll | Bin 2445824 -> 2445824 bytes 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas b/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas index a65d78fe..bbd41614 100644 --- a/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas +++ b/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas @@ -247,31 +247,32 @@ begin rxCnt := 0; packetLen := 0; - // re-confgure the reception timeout now that the total packet length is known. - // timeout = (MULTIPLIER) * number_of_bytes + CONSTANT - sciDriver.Timeouts.ReadTotalConstant := 0; - if timeOutms > 0 then - sciDriver.Timeouts.ReadTotalMultiplier := timeOutms div resLen - else - sciDriver.Timeouts.ReadTotalMultiplier := timeOutms; - - // attempt to receive the bytes of the response packet one by one - while (rxCnt < resLen) and (GetTickCount < dwEnd) do + // only attempt to receive the remainder of the packet if its length is valid + if resLen > 0 then begin - // receive the next byte - if sciDriver.Read(packetData[rxCnt], 1) = 1 then + // re-confgure the reception timeout now that the total packet length is known. + // timeout = (MULTIPLIER) * number_of_bytes + CONSTANT + sciDriver.Timeouts.ReadTotalConstant := 0; + sciDriver.Timeouts.ReadTotalMultiplier := timeOutms div resLen; + + // attempt to receive the bytes of the response packet one by one + while (rxCnt < resLen) and (GetTickCount < dwEnd) do begin - // increment counter - rxCnt := rxCnt + 1; + // receive the next byte + if sciDriver.Read(packetData[rxCnt], 1) = 1 then + begin + // increment counter + rxCnt := rxCnt + 1; + end; end; - end; - // check to see if all bytes were received. if not, then a timeout must have - // happened. - if rxCnt = resLen then - begin - packetLen := resLen; - result := true; + // check to see if all bytes were received. if not, then a timeout must have + // happened. + if rxCnt = resLen then + begin + packetLen := resLen; + result := true; + end; end; end; end; //*** end of SendPacket *** diff --git a/Host/openblt_uart.dll b/Host/openblt_uart.dll index 5624b4d66862e5739a636ff57d7d595cc7c8891b..5be5c2125ecb4c56d70937f4219c39aaacc90454 100644 GIT binary patch delta 28433 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 i1bDPs{hgg#&y4=RPf8)|Owj?WlCx#{UlpyCUoW delta 28434 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 fNA0JsrQY_edVgv2_~$;WUeR1%w(T?d