Resolve unsafe buffer usage in CPDF_PSEngine
Conversion to std::array<> and a small cleanup is all that is
required.
Bug: pdfium:2155
Change-Id: Ia7764a118ff7fb35b22e68d62bd8cf099974a1b4
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/118991
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Thomas Sepez <tsepez@google.com>
diff --git a/core/fpdfapi/page/cpdf_psengine.cpp b/core/fpdfapi/page/cpdf_psengine.cpp
index 6b52b8b..75f3156 100644
--- a/core/fpdfapi/page/cpdf_psengine.cpp
+++ b/core/fpdfapi/page/cpdf_psengine.cpp
@@ -4,11 +4,6 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#if defined(UNSAFE_BUFFERS_BUILD)
-// TODO(crbug.com/pdfium/2153): resolve buffer safety issues.
-#pragma allow_unsafe_buffers
-#endif
-
#include "core/fpdfapi/page/cpdf_psengine.h"
#include <math.h>
@@ -441,9 +436,9 @@
j %= n;
if (j > 0)
j -= n;
- auto* begin_it = std::begin(m_Stack) + m_StackCount - n;
- auto* middle_it = begin_it - j;
- auto* end_it = std::begin(m_Stack) + m_StackCount;
+ auto begin_it = std::begin(m_Stack) + m_StackCount - n;
+ auto middle_it = begin_it - j;
+ auto end_it = std::begin(m_Stack) + m_StackCount;
std::rotate(begin_it, middle_it, end_it);
break;
}
diff --git a/core/fpdfapi/page/cpdf_psengine.h b/core/fpdfapi/page/cpdf_psengine.h
index d93f516..908c701 100644
--- a/core/fpdfapi/page/cpdf_psengine.h
+++ b/core/fpdfapi/page/cpdf_psengine.h
@@ -10,6 +10,7 @@
#include <stddef.h>
#include <stdint.h>
+#include <array>
#include <memory>
#include <vector>
@@ -127,7 +128,7 @@
uint32_t m_StackCount = 0;
CPDF_PSProc m_MainProc;
- float m_Stack[kPSEngineStackSize] = {};
+ std::array<float, kPSEngineStackSize> m_Stack = {};
};
#endif // CORE_FPDFAPI_PAGE_CPDF_PSENGINE_H_