Fix wrong integer type CPDF_SecurityHandler::GetUserPassword().
Do not try to hold a size_t in an int. Slightly refactor the surrounding
code to be more compact.
Bug: chromium:1030583
Change-Id: I111577dd90b1f702e3d061c60c66798cf155b1ab
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/63152
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/parser/cpdf_security_handler.cpp b/core/fpdfapi/parser/cpdf_security_handler.cpp
index 2d2795f..1c3ac75 100644
--- a/core/fpdfapi/parser/cpdf_security_handler.cpp
+++ b/core/fpdfapi/parser/cpdf_security_handler.cpp
@@ -489,12 +489,8 @@
copy_len = sizeof(digest);
memcpy(enckey, digest, copy_len);
- int okeylen = okey.GetLength();
- if (okeylen > 32) {
- okeylen = 32;
- }
- uint8_t okeybuf[64];
- memset(okeybuf, 0, sizeof(okeybuf));
+ size_t okeylen = std::min<size_t>(okey.GetLength(), 32);
+ uint8_t okeybuf[64] = {};
memcpy(okeybuf, okey.c_str(), okeylen);
if (m_Revision == 2) {
CRYPT_ArcFourCryptBlock(okeybuf, okeylen, enckey, m_KeyLen);