From d9e221806b9cb182d9aaacd9efe34b0b013855ca Mon Sep 17 00:00:00 2001 From: kaleb-himes Date: Thu, 27 Feb 2020 09:39:22 -0700 Subject: [PATCH] Fix infinite loop with small sha1 inputs. Thanks to Peter W. on ZD9976 for the report --- wolfcrypt/src/port/pic32/pic32mz-crypt.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/wolfcrypt/src/port/pic32/pic32mz-crypt.c b/wolfcrypt/src/port/pic32/pic32mz-crypt.c index 319e6ca3a..1e618c194 100644 --- a/wolfcrypt/src/port/pic32/pic32mz-crypt.c +++ b/wolfcrypt/src/port/pic32/pic32mz-crypt.c @@ -427,6 +427,9 @@ static void start_engine(pic32mz_desc *desc) bufferLen = desc->dbPtr; if (bufferLen % 4) bufferLen = (bufferLen + 4) - (bufferLen % 4); + /* initialize the MSGLEN on engine startup to avoid infinite loop when + * length is less than 257 (size of PIC32_BLOCK_SIZE) */ + uc_desc->bd[desc->currBd].MSGLEN = desc->msgSize; uc_desc->bd[desc->currBd].BD_CTRL.BUFLEN = bufferLen; uc_desc->bd[desc->currBd].BD_CTRL.LAST_BD = 1; uc_desc->bd[desc->currBd].BD_CTRL.LIFM = 1;