Avoid UNSAFE_BUFFERS in CPDFSDK_AppStream Unroll one loop to get const indicies. Bug: 42271176 Change-Id: I98088ff18df27b56bc008796fd2351452a0ffbb3 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/120711 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org> Reviewed-by: Thomas Sepez <tsepez@google.com> Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/cpdfsdk_appstream.cpp b/fpdfsdk/cpdfsdk_appstream.cpp index aaf77de..3a9bfab 100644 --- a/fpdfsdk/cpdfsdk_appstream.cpp +++ b/fpdfsdk/cpdfsdk_appstream.cpp
@@ -8,6 +8,7 @@ #include <math.h> +#include <array> #include <iterator> #include <memory> #include <sstream> @@ -30,7 +31,6 @@ #include "core/fpdfdoc/cpdf_formcontrol.h" #include "core/fpdfdoc/cpdf_icon.h" #include "core/fpdfdoc/cpvt_word.h" -#include "core/fxcrt/compiler_specific.h" #include "core/fxcrt/fx_string_wrappers.h" #include "core/fxcrt/numerics/safe_conversions.h" #include "core/fxcrt/span.h" @@ -319,7 +319,7 @@ CFX_PointF ptCenter = CFX_PointF((crBBox.left + crBBox.right) / 2.0f, (crBBox.top + crBBox.bottom) / 2.0f); - CFX_PointF points[5]; + std::array<CFX_PointF, 5> points; float fAngle = FXSYS_PI / 10.0f; for (auto& point : points) { point = @@ -328,12 +328,11 @@ } WriteMove(csAP, points[0]); - - int next = 0; - for (size_t i = 0; i < std::size(points); ++i) { - next = (next + 2) % std::size(points); - WriteLine(csAP, UNSAFE_TODO(points[next])); - } + WriteLine(csAP, points[2]); + WriteLine(csAP, points[4]); + WriteLine(csAP, points[1]); + WriteLine(csAP, points[3]); + WriteLine(csAP, points[0]); return ByteString(csAP); }