Make |CJBig2_BitStream::m_Span| const.
Add a helper function to validate the span's size, instead of doing the
validation in CJBig2_BitStream's ctor.
Change-Id: I3d94efe8694826c63822b6d9328a309b8d55d47b
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/55352
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxcodec/jbig2/JBig2_BitStream.cpp b/core/fxcodec/jbig2/JBig2_BitStream.cpp
index 83c12d5..fb2a888 100644
--- a/core/fxcodec/jbig2/JBig2_BitStream.cpp
+++ b/core/fxcodec/jbig2/JBig2_BitStream.cpp
@@ -8,15 +8,21 @@
#include <algorithm>
-CJBig2_BitStream::CJBig2_BitStream(pdfium::span<const uint8_t> pSrcStream,
- uint32_t dwObjNum)
- : m_Span(pSrcStream), m_dwObjNum(dwObjNum) {
- if (m_Span.size() > 256 * 1024 * 1024) {
- m_Span = {};
- }
+namespace {
+
+pdfium::span<const uint8_t> ValidatedSpan(pdfium::span<const uint8_t> sp) {
+ if (sp.size() > 256 * 1024 * 1024)
+ return {};
+ return sp;
}
-CJBig2_BitStream::~CJBig2_BitStream() {}
+} // namespace
+
+CJBig2_BitStream::CJBig2_BitStream(pdfium::span<const uint8_t> pSrcStream,
+ uint32_t dwObjNum)
+ : m_Span(ValidatedSpan(pSrcStream)), m_dwObjNum(dwObjNum) {}
+
+CJBig2_BitStream::~CJBig2_BitStream() = default;
int32_t CJBig2_BitStream::readNBits(uint32_t dwBits, uint32_t* dwResult) {
if (!IsInBounds())
diff --git a/core/fxcodec/jbig2/JBig2_BitStream.h b/core/fxcodec/jbig2/JBig2_BitStream.h
index e4bb82b..86550c2 100644
--- a/core/fxcodec/jbig2/JBig2_BitStream.h
+++ b/core/fxcodec/jbig2/JBig2_BitStream.h
@@ -44,7 +44,7 @@
void AdvanceBit();
uint32_t LengthInBits() const;
- pdfium::span<const uint8_t> m_Span;
+ pdfium::span<const uint8_t> const m_Span;
uint32_t m_dwByteIdx = 0;
uint32_t m_dwBitIdx = 0;
const uint32_t m_dwObjNum;