Merge pull request #4021 from embhorn/zd12233

Fix heap-buffer-overflow issues in wolfSSL_SMIME_read_PKCS7
This commit is contained in:
Sean Parkinson
2021-06-11 12:38:52 +10:00
committed by GitHub

View File

@ -54466,17 +54466,23 @@ WOLFSSL_API PKCS7* wolfSSL_SMIME_read_PKCS7(WOLFSSL_BIO* in,
} }
} }
canonPos--; if (canonPos > 0) {
canonPos--;
}
/* Strip the final trailing newline. Support \r, \n or \r\n. */ /* Strip the final trailing newline. Support \r, \n or \r\n. */
if (canonSection[canonPos] == '\n') { if (canonSection[canonPos] == '\n') {
canonPos--; if (canonPos > 0) {
if (canonSection[canonPos] == '\r') {
canonPos--; canonPos--;
} }
} }
else if (canonSection[canonPos] == '\r') {
canonPos--; if (canonSection[canonPos] == '\r') {
if (canonPos > 0) {
canonPos--;
}
} }
canonSection[canonPos+1] = '\0'; canonSection[canonPos+1] = '\0';
*bcont = wolfSSL_BIO_new(wolfSSL_BIO_s_mem()); *bcont = wolfSSL_BIO_new(wolfSSL_BIO_s_mem());
@ -54590,8 +54596,8 @@ WOLFSSL_API PKCS7* wolfSSL_SMIME_read_PKCS7(WOLFSSL_BIO* in,
goto error; goto error;
} }
/* Strip trailing newlines. */ /* Strip trailing newlines. */
while ((section[sectionLen-1] == '\r' || section[sectionLen-1] == '\n') && while ((sectionLen > 0) &&
sectionLen > 0) { (section[sectionLen-1] == '\r' || section[sectionLen-1] == '\n')) {
sectionLen--; sectionLen--;
} }
section[sectionLen] = '\0'; section[sectionLen] = '\0';