summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLei Zhang <thestig@chromium.org>2018-01-11 14:26:01 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-01-11 14:26:01 +0000
commit7981d15a799e3bdfaf6bd3e04fc08a6a43d143ec (patch)
treee9afc04bbee08b17e32c2286c6e2ae1d9ea52d41
parent8b68d30fdc8ae33a8a5c2d647bd7a67f1271ff90 (diff)
downloadpdfium-7981d15a799e3bdfaf6bd3e04fc08a6a43d143ec.tar.xz
Add jumbo build support for fdrm, fpdfdoc and fxcrt.
BUG=pdfium:964 Change-Id: Ifde885861aeafac803948bd537de826e2a3fddca Reviewed-on: https://pdfium-review.googlesource.com/22732 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
-rw-r--r--BUILD.gn9
-rw-r--r--core/fdrm/crypto/fx_crypt_sha.cpp218
-rw-r--r--core/fpdfdoc/cpdf_formfield.cpp11
-rw-r--r--core/fpdfdoc/cpdf_nametree.cpp12
-rw-r--r--core/fpdfdoc/cpdf_structtree.cpp5
-rw-r--r--core/fxcrt/bytestring.cpp2
-rw-r--r--core/fxcrt/widestring.cpp16
7 files changed, 134 insertions, 139 deletions
diff --git a/BUILD.gn b/BUILD.gn
index b5a8098c2c..3c32f3c1f0 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -285,8 +285,7 @@ visibility = [
"//:gn_visibility",
]
-# TODO(crbug.com/pdfium/964): Support jumbo builds.
-static_library("fdrm") {
+jumbo_static_library("fdrm") {
sources = [
"core/fdrm/crypto/fx_crypt.cpp",
"core/fdrm/crypto/fx_crypt.h",
@@ -299,8 +298,7 @@ static_library("fdrm") {
]
}
-# TODO(crbug.com/pdfium/964): Support jumbo builds.
-static_library("fpdfdoc") {
+jumbo_static_library("fpdfdoc") {
sources = [
"core/fpdfdoc/cline.cpp",
"core/fpdfdoc/cline.h",
@@ -804,8 +802,7 @@ config("fxge_warnings") {
}
}
-# TODO(crbug.com/pdfium/964): Support jumbo builds.
-static_library("fxcrt") {
+jumbo_static_library("fxcrt") {
sources = [
"core/fxcrt/autorestorer.h",
"core/fxcrt/bytestring.cpp",
diff --git a/core/fdrm/crypto/fx_crypt_sha.cpp b/core/fdrm/crypto/fx_crypt_sha.cpp
index 812700d9cd..55b885db75 100644
--- a/core/fdrm/crypto/fx_crypt_sha.cpp
+++ b/core/fdrm/crypto/fx_crypt_sha.cpp
@@ -8,12 +8,12 @@
#define rol(x, y) (((x) << (y)) | (((unsigned int)x) >> (32 - y)))
-#define GET_UINT32(n, b, i) \
+#define SHA_GET_UINT32(n, b, i) \
{ \
(n) = ((uint32_t)(b)[(i)] << 24) | ((uint32_t)(b)[(i) + 1] << 16) | \
((uint32_t)(b)[(i) + 2] << 8) | ((uint32_t)(b)[(i) + 3]); \
}
-#define PUT_UINT32(n, b, i) \
+#define SHA_PUT_UINT32(n, b, i) \
{ \
(b)[(i)] = (uint8_t)((n) >> 24); \
(b)[(i) + 1] = (uint8_t)((n) >> 16); \
@@ -70,7 +70,7 @@
#define F0(x, y, z) ((x & y) | (z & (x | y)))
#define F1(x, y, z) (z ^ (x & (y ^ z)))
#define R(t) (W[t] = S1(W[t - 2]) + W[t - 7] + S0(W[t - 15]) + W[t - 16])
-#define P(a, b, c, d, e, f, g, h, x, K) \
+#define PS(a, b, c, d, e, f, g, h, x, K) \
{ \
temp1 = h + S3(e) + F1(e, f, g) + K + x; \
temp2 = S2(a) + F0(a, b, c); \
@@ -145,96 +145,98 @@ void SHATransform(unsigned int* digest, unsigned int* block) {
}
void sha256_process(CRYPT_sha2_context* ctx, const uint8_t data[64]) {
- uint32_t temp1, temp2, W[64];
- uint32_t A, B, C, D, E, F, G, H;
- GET_UINT32(W[0], data, 0);
- GET_UINT32(W[1], data, 4);
- GET_UINT32(W[2], data, 8);
- GET_UINT32(W[3], data, 12);
- GET_UINT32(W[4], data, 16);
- GET_UINT32(W[5], data, 20);
- GET_UINT32(W[6], data, 24);
- GET_UINT32(W[7], data, 28);
- GET_UINT32(W[8], data, 32);
- GET_UINT32(W[9], data, 36);
- GET_UINT32(W[10], data, 40);
- GET_UINT32(W[11], data, 44);
- GET_UINT32(W[12], data, 48);
- GET_UINT32(W[13], data, 52);
- GET_UINT32(W[14], data, 56);
- GET_UINT32(W[15], data, 60);
- A = ctx->state[0];
- B = ctx->state[1];
- C = ctx->state[2];
- D = ctx->state[3];
- E = ctx->state[4];
- F = ctx->state[5];
- G = ctx->state[6];
- H = ctx->state[7];
- P(A, B, C, D, E, F, G, H, W[0], 0x428A2F98);
- P(H, A, B, C, D, E, F, G, W[1], 0x71374491);
- P(G, H, A, B, C, D, E, F, W[2], 0xB5C0FBCF);
- P(F, G, H, A, B, C, D, E, W[3], 0xE9B5DBA5);
- P(E, F, G, H, A, B, C, D, W[4], 0x3956C25B);
- P(D, E, F, G, H, A, B, C, W[5], 0x59F111F1);
- P(C, D, E, F, G, H, A, B, W[6], 0x923F82A4);
- P(B, C, D, E, F, G, H, A, W[7], 0xAB1C5ED5);
- P(A, B, C, D, E, F, G, H, W[8], 0xD807AA98);
- P(H, A, B, C, D, E, F, G, W[9], 0x12835B01);
- P(G, H, A, B, C, D, E, F, W[10], 0x243185BE);
- P(F, G, H, A, B, C, D, E, W[11], 0x550C7DC3);
- P(E, F, G, H, A, B, C, D, W[12], 0x72BE5D74);
- P(D, E, F, G, H, A, B, C, W[13], 0x80DEB1FE);
- P(C, D, E, F, G, H, A, B, W[14], 0x9BDC06A7);
- P(B, C, D, E, F, G, H, A, W[15], 0xC19BF174);
- P(A, B, C, D, E, F, G, H, R(16), 0xE49B69C1);
- P(H, A, B, C, D, E, F, G, R(17), 0xEFBE4786);
- P(G, H, A, B, C, D, E, F, R(18), 0x0FC19DC6);
- P(F, G, H, A, B, C, D, E, R(19), 0x240CA1CC);
- P(E, F, G, H, A, B, C, D, R(20), 0x2DE92C6F);
- P(D, E, F, G, H, A, B, C, R(21), 0x4A7484AA);
- P(C, D, E, F, G, H, A, B, R(22), 0x5CB0A9DC);
- P(B, C, D, E, F, G, H, A, R(23), 0x76F988DA);
- P(A, B, C, D, E, F, G, H, R(24), 0x983E5152);
- P(H, A, B, C, D, E, F, G, R(25), 0xA831C66D);
- P(G, H, A, B, C, D, E, F, R(26), 0xB00327C8);
- P(F, G, H, A, B, C, D, E, R(27), 0xBF597FC7);
- P(E, F, G, H, A, B, C, D, R(28), 0xC6E00BF3);
- P(D, E, F, G, H, A, B, C, R(29), 0xD5A79147);
- P(C, D, E, F, G, H, A, B, R(30), 0x06CA6351);
- P(B, C, D, E, F, G, H, A, R(31), 0x14292967);
- P(A, B, C, D, E, F, G, H, R(32), 0x27B70A85);
- P(H, A, B, C, D, E, F, G, R(33), 0x2E1B2138);
- P(G, H, A, B, C, D, E, F, R(34), 0x4D2C6DFC);
- P(F, G, H, A, B, C, D, E, R(35), 0x53380D13);
- P(E, F, G, H, A, B, C, D, R(36), 0x650A7354);
- P(D, E, F, G, H, A, B, C, R(37), 0x766A0ABB);
- P(C, D, E, F, G, H, A, B, R(38), 0x81C2C92E);
- P(B, C, D, E, F, G, H, A, R(39), 0x92722C85);
- P(A, B, C, D, E, F, G, H, R(40), 0xA2BFE8A1);
- P(H, A, B, C, D, E, F, G, R(41), 0xA81A664B);
- P(G, H, A, B, C, D, E, F, R(42), 0xC24B8B70);
- P(F, G, H, A, B, C, D, E, R(43), 0xC76C51A3);
- P(E, F, G, H, A, B, C, D, R(44), 0xD192E819);
- P(D, E, F, G, H, A, B, C, R(45), 0xD6990624);
- P(C, D, E, F, G, H, A, B, R(46), 0xF40E3585);
- P(B, C, D, E, F, G, H, A, R(47), 0x106AA070);
- P(A, B, C, D, E, F, G, H, R(48), 0x19A4C116);
- P(H, A, B, C, D, E, F, G, R(49), 0x1E376C08);
- P(G, H, A, B, C, D, E, F, R(50), 0x2748774C);
- P(F, G, H, A, B, C, D, E, R(51), 0x34B0BCB5);
- P(E, F, G, H, A, B, C, D, R(52), 0x391C0CB3);
- P(D, E, F, G, H, A, B, C, R(53), 0x4ED8AA4A);
- P(C, D, E, F, G, H, A, B, R(54), 0x5B9CCA4F);
- P(B, C, D, E, F, G, H, A, R(55), 0x682E6FF3);
- P(A, B, C, D, E, F, G, H, R(56), 0x748F82EE);
- P(H, A, B, C, D, E, F, G, R(57), 0x78A5636F);
- P(G, H, A, B, C, D, E, F, R(58), 0x84C87814);
- P(F, G, H, A, B, C, D, E, R(59), 0x8CC70208);
- P(E, F, G, H, A, B, C, D, R(60), 0x90BEFFFA);
- P(D, E, F, G, H, A, B, C, R(61), 0xA4506CEB);
- P(C, D, E, F, G, H, A, B, R(62), 0xBEF9A3F7);
- P(B, C, D, E, F, G, H, A, R(63), 0xC67178F2);
+ uint32_t W[64];
+ SHA_GET_UINT32(W[0], data, 0);
+ SHA_GET_UINT32(W[1], data, 4);
+ SHA_GET_UINT32(W[2], data, 8);
+ SHA_GET_UINT32(W[3], data, 12);
+ SHA_GET_UINT32(W[4], data, 16);
+ SHA_GET_UINT32(W[5], data, 20);
+ SHA_GET_UINT32(W[6], data, 24);
+ SHA_GET_UINT32(W[7], data, 28);
+ SHA_GET_UINT32(W[8], data, 32);
+ SHA_GET_UINT32(W[9], data, 36);
+ SHA_GET_UINT32(W[10], data, 40);
+ SHA_GET_UINT32(W[11], data, 44);
+ SHA_GET_UINT32(W[12], data, 48);
+ SHA_GET_UINT32(W[13], data, 52);
+ SHA_GET_UINT32(W[14], data, 56);
+ SHA_GET_UINT32(W[15], data, 60);
+
+ uint32_t temp1;
+ uint32_t temp2;
+ uint32_t A = ctx->state[0];
+ uint32_t B = ctx->state[1];
+ uint32_t C = ctx->state[2];
+ uint32_t D = ctx->state[3];
+ uint32_t E = ctx->state[4];
+ uint32_t F = ctx->state[5];
+ uint32_t G = ctx->state[6];
+ uint32_t H = ctx->state[7];
+ PS(A, B, C, D, E, F, G, H, W[0], 0x428A2F98);
+ PS(H, A, B, C, D, E, F, G, W[1], 0x71374491);
+ PS(G, H, A, B, C, D, E, F, W[2], 0xB5C0FBCF);
+ PS(F, G, H, A, B, C, D, E, W[3], 0xE9B5DBA5);
+ PS(E, F, G, H, A, B, C, D, W[4], 0x3956C25B);
+ PS(D, E, F, G, H, A, B, C, W[5], 0x59F111F1);
+ PS(C, D, E, F, G, H, A, B, W[6], 0x923F82A4);
+ PS(B, C, D, E, F, G, H, A, W[7], 0xAB1C5ED5);
+ PS(A, B, C, D, E, F, G, H, W[8], 0xD807AA98);
+ PS(H, A, B, C, D, E, F, G, W[9], 0x12835B01);
+ PS(G, H, A, B, C, D, E, F, W[10], 0x243185BE);
+ PS(F, G, H, A, B, C, D, E, W[11], 0x550C7DC3);
+ PS(E, F, G, H, A, B, C, D, W[12], 0x72BE5D74);
+ PS(D, E, F, G, H, A, B, C, W[13], 0x80DEB1FE);
+ PS(C, D, E, F, G, H, A, B, W[14], 0x9BDC06A7);
+ PS(B, C, D, E, F, G, H, A, W[15], 0xC19BF174);
+ PS(A, B, C, D, E, F, G, H, R(16), 0xE49B69C1);
+ PS(H, A, B, C, D, E, F, G, R(17), 0xEFBE4786);
+ PS(G, H, A, B, C, D, E, F, R(18), 0x0FC19DC6);
+ PS(F, G, H, A, B, C, D, E, R(19), 0x240CA1CC);
+ PS(E, F, G, H, A, B, C, D, R(20), 0x2DE92C6F);
+ PS(D, E, F, G, H, A, B, C, R(21), 0x4A7484AA);
+ PS(C, D, E, F, G, H, A, B, R(22), 0x5CB0A9DC);
+ PS(B, C, D, E, F, G, H, A, R(23), 0x76F988DA);
+ PS(A, B, C, D, E, F, G, H, R(24), 0x983E5152);
+ PS(H, A, B, C, D, E, F, G, R(25), 0xA831C66D);
+ PS(G, H, A, B, C, D, E, F, R(26), 0xB00327C8);
+ PS(F, G, H, A, B, C, D, E, R(27), 0xBF597FC7);
+ PS(E, F, G, H, A, B, C, D, R(28), 0xC6E00BF3);
+ PS(D, E, F, G, H, A, B, C, R(29), 0xD5A79147);
+ PS(C, D, E, F, G, H, A, B, R(30), 0x06CA6351);
+ PS(B, C, D, E, F, G, H, A, R(31), 0x14292967);
+ PS(A, B, C, D, E, F, G, H, R(32), 0x27B70A85);
+ PS(H, A, B, C, D, E, F, G, R(33), 0x2E1B2138);
+ PS(G, H, A, B, C, D, E, F, R(34), 0x4D2C6DFC);
+ PS(F, G, H, A, B, C, D, E, R(35), 0x53380D13);
+ PS(E, F, G, H, A, B, C, D, R(36), 0x650A7354);
+ PS(D, E, F, G, H, A, B, C, R(37), 0x766A0ABB);
+ PS(C, D, E, F, G, H, A, B, R(38), 0x81C2C92E);
+ PS(B, C, D, E, F, G, H, A, R(39), 0x92722C85);
+ PS(A, B, C, D, E, F, G, H, R(40), 0xA2BFE8A1);
+ PS(H, A, B, C, D, E, F, G, R(41), 0xA81A664B);
+ PS(G, H, A, B, C, D, E, F, R(42), 0xC24B8B70);
+ PS(F, G, H, A, B, C, D, E, R(43), 0xC76C51A3);
+ PS(E, F, G, H, A, B, C, D, R(44), 0xD192E819);
+ PS(D, E, F, G, H, A, B, C, R(45), 0xD6990624);
+ PS(C, D, E, F, G, H, A, B, R(46), 0xF40E3585);
+ PS(B, C, D, E, F, G, H, A, R(47), 0x106AA070);
+ PS(A, B, C, D, E, F, G, H, R(48), 0x19A4C116);
+ PS(H, A, B, C, D, E, F, G, R(49), 0x1E376C08);
+ PS(G, H, A, B, C, D, E, F, R(50), 0x2748774C);
+ PS(F, G, H, A, B, C, D, E, R(51), 0x34B0BCB5);
+ PS(E, F, G, H, A, B, C, D, R(52), 0x391C0CB3);
+ PS(D, E, F, G, H, A, B, C, R(53), 0x4ED8AA4A);
+ PS(C, D, E, F, G, H, A, B, R(54), 0x5B9CCA4F);
+ PS(B, C, D, E, F, G, H, A, R(55), 0x682E6FF3);
+ PS(A, B, C, D, E, F, G, H, R(56), 0x748F82EE);
+ PS(H, A, B, C, D, E, F, G, R(57), 0x78A5636F);
+ PS(G, H, A, B, C, D, E, F, R(58), 0x84C87814);
+ PS(F, G, H, A, B, C, D, E, R(59), 0x8CC70208);
+ PS(E, F, G, H, A, B, C, D, R(60), 0x90BEFFFA);
+ PS(D, E, F, G, H, A, B, C, R(61), 0xA4506CEB);
+ PS(C, D, E, F, G, H, A, B, R(62), 0xBEF9A3F7);
+ PS(B, C, D, E, F, G, H, A, R(63), 0xC67178F2);
ctx->state[0] += A;
ctx->state[1] += B;
ctx->state[2] += C;
@@ -479,25 +481,23 @@ void CRYPT_SHA256Update(CRYPT_sha2_context* ctx,
}
void CRYPT_SHA256Finish(CRYPT_sha2_context* ctx, uint8_t digest[32]) {
- uint32_t last, padn;
- uint32_t high, low;
uint8_t msglen[8];
- high = (ctx->total[0] >> 29) | (ctx->total[1] << 3);
- low = (ctx->total[0] << 3);
- PUT_UINT32(high, msglen, 0);
- PUT_UINT32(low, msglen, 4);
- last = ctx->total[0] & 0x3F;
- padn = (last < 56) ? (56 - last) : (120 - last);
+ uint32_t high = (ctx->total[0] >> 29) | (ctx->total[1] << 3);
+ uint32_t low = (ctx->total[0] << 3);
+ SHA_PUT_UINT32(high, msglen, 0);
+ SHA_PUT_UINT32(low, msglen, 4);
+ uint32_t last = ctx->total[0] & 0x3F;
+ uint32_t padn = (last < 56) ? (56 - last) : (120 - last);
CRYPT_SHA256Update(ctx, sha256_padding, padn);
CRYPT_SHA256Update(ctx, msglen, 8);
- PUT_UINT32(ctx->state[0], digest, 0);
- PUT_UINT32(ctx->state[1], digest, 4);
- PUT_UINT32(ctx->state[2], digest, 8);
- PUT_UINT32(ctx->state[3], digest, 12);
- PUT_UINT32(ctx->state[4], digest, 16);
- PUT_UINT32(ctx->state[5], digest, 20);
- PUT_UINT32(ctx->state[6], digest, 24);
- PUT_UINT32(ctx->state[7], digest, 28);
+ SHA_PUT_UINT32(ctx->state[0], digest, 0);
+ SHA_PUT_UINT32(ctx->state[1], digest, 4);
+ SHA_PUT_UINT32(ctx->state[2], digest, 8);
+ SHA_PUT_UINT32(ctx->state[3], digest, 12);
+ SHA_PUT_UINT32(ctx->state[4], digest, 16);
+ SHA_PUT_UINT32(ctx->state[5], digest, 20);
+ SHA_PUT_UINT32(ctx->state[6], digest, 24);
+ SHA_PUT_UINT32(ctx->state[7], digest, 28);
}
void CRYPT_SHA256Generate(const uint8_t* data,
diff --git a/core/fpdfdoc/cpdf_formfield.cpp b/core/fpdfdoc/cpdf_formfield.cpp
index 395b5c5713..2502fe6faa 100644
--- a/core/fpdfdoc/cpdf_formfield.cpp
+++ b/core/fpdfdoc/cpdf_formfield.cpp
@@ -25,8 +25,6 @@
namespace {
-const int kMaxRecursion = 32;
-
const int kFormListMultiSelect = 0x100;
const int kFormComboEdit = 0x100;
@@ -50,9 +48,8 @@ bool IsUnison(CPDF_FormField* pField) {
CPDF_Object* FPDF_GetFieldAttr(const CPDF_Dictionary* pFieldDict,
const char* name,
int nLevel) {
- if (nLevel > kMaxRecursion)
- return nullptr;
- if (!pFieldDict)
+ static constexpr int kGetFieldMaxRecursion = 32;
+ if (!pFieldDict || nLevel > kGetFieldMaxRecursion)
return nullptr;
CPDF_Object* pAttr = pFieldDict->GetDirectObjectFor(name);
@@ -60,9 +57,7 @@ CPDF_Object* FPDF_GetFieldAttr(const CPDF_Dictionary* pFieldDict,
return pAttr;
CPDF_Dictionary* pParent = pFieldDict->GetDictFor("Parent");
- if (!pParent)
- return nullptr;
- return FPDF_GetFieldAttr(pParent, name, nLevel + 1);
+ return pParent ? FPDF_GetFieldAttr(pParent, name, nLevel + 1) : nullptr;
}
WideString FPDF_GetFullName(CPDF_Dictionary* pFieldDict) {
diff --git a/core/fpdfdoc/cpdf_nametree.cpp b/core/fpdfdoc/cpdf_nametree.cpp
index 631571c9e4..3c5b08db21 100644
--- a/core/fpdfdoc/cpdf_nametree.cpp
+++ b/core/fpdfdoc/cpdf_nametree.cpp
@@ -17,7 +17,7 @@
namespace {
-const int nMaxRecursion = 32;
+constexpr int kNameTreeMaxRecursion = 32;
std::pair<WideString, WideString> GetNodeLimitsMaybeSwap(CPDF_Array* pLimits) {
ASSERT(pLimits);
@@ -40,7 +40,7 @@ bool GetNodeAncestorsLimits(const CPDF_Dictionary* pNode,
const CPDF_Array* pFind,
int nLevel,
std::vector<CPDF_Array*>* pLimits) {
- if (nLevel > nMaxRecursion)
+ if (nLevel > kNameTreeMaxRecursion)
return false;
if (pNode->GetArrayFor("Names") == pFind) {
@@ -72,7 +72,7 @@ bool UpdateNodesAndLimitsUponDeletion(CPDF_Dictionary* pNode,
const CPDF_Array* pFind,
const WideString& csName,
int nLevel) {
- if (nLevel > nMaxRecursion)
+ if (nLevel > kNameTreeMaxRecursion)
return false;
CPDF_Array* pLimits = pNode->GetArrayFor("Limits");
@@ -159,7 +159,7 @@ CPDF_Object* SearchNameNodeByName(const CPDF_Dictionary* pNode,
size_t* nIndex,
CPDF_Array** ppFind,
int* pFindIndex) {
- if (nLevel > nMaxRecursion)
+ if (nLevel > kNameTreeMaxRecursion)
return nullptr;
CPDF_Array* pLimits = pNode->GetArrayFor("Limits");
@@ -235,7 +235,7 @@ CPDF_Object* SearchNameNodeByIndex(const CPDF_Dictionary* pNode,
WideString* csName,
CPDF_Array** ppFind,
int* pFindIndex) {
- if (nLevel > nMaxRecursion)
+ if (nLevel > kNameTreeMaxRecursion)
return nullptr;
CPDF_Array* pNames = pNode->GetArrayFor("Names");
@@ -272,7 +272,7 @@ CPDF_Object* SearchNameNodeByIndex(const CPDF_Dictionary* pNode,
// Get the total number of key-value pairs in the tree with root |pNode|.
size_t CountNamesInternal(CPDF_Dictionary* pNode, int nLevel) {
- if (nLevel > nMaxRecursion)
+ if (nLevel > kNameTreeMaxRecursion)
return 0;
CPDF_Array* pNames = pNode->GetArrayFor("Names");
diff --git a/core/fpdfdoc/cpdf_structtree.cpp b/core/fpdfdoc/cpdf_structtree.cpp
index 48b83f555c..97db691425 100644
--- a/core/fpdfdoc/cpdf_structtree.cpp
+++ b/core/fpdfdoc/cpdf_structtree.cpp
@@ -15,8 +15,6 @@
namespace {
-const int nMaxRecursion = 32;
-
bool IsTagged(const CPDF_Document* pDoc) {
const CPDF_Dictionary* pCatalog = pDoc->GetRoot();
const CPDF_Dictionary* pMarkInfo = pCatalog->GetDictFor("MarkInfo");
@@ -87,7 +85,8 @@ RetainPtr<CPDF_StructElement> CPDF_StructTree::AddPageNode(
CPDF_Dictionary* pDict,
std::map<CPDF_Dictionary*, RetainPtr<CPDF_StructElement>>* map,
int nLevel) {
- if (nLevel > nMaxRecursion)
+ static constexpr int kStructTreeMaxRecursion = 32;
+ if (nLevel > kStructTreeMaxRecursion)
return nullptr;
auto it = map->find(pDict);
diff --git a/core/fxcrt/bytestring.cpp b/core/fxcrt/bytestring.cpp
index 3e4861ae60..2ab1379974 100644
--- a/core/fxcrt/bytestring.cpp
+++ b/core/fxcrt/bytestring.cpp
@@ -69,7 +69,9 @@ bool IsValidCodePage(uint16_t codepage) {
#endif
ByteString GetByteString(uint16_t codepage, const WideStringView& wstr) {
+#ifndef NDEBUG
ASSERT(IsValidCodePage(codepage));
+#endif
int src_len = wstr.GetLength();
int dest_len =
diff --git a/core/fxcrt/widestring.cpp b/core/fxcrt/widestring.cpp
index 158c67409b..8d47564e13 100644
--- a/core/fxcrt/widestring.cpp
+++ b/core/fxcrt/widestring.cpp
@@ -31,7 +31,7 @@ template struct std::hash<WideString>;
namespace {
-constexpr wchar_t kTrimChars[] = L"\x09\x0a\x0b\x0c\x0d\x20";
+constexpr wchar_t kWideTrimChars[] = L"\x09\x0a\x0b\x0c\x0d\x20";
const wchar_t* FX_wcsstr(const wchar_t* haystack,
int haystack_len,
@@ -273,7 +273,7 @@ Optional<WideString> TryVSWPrintf(size_t size,
}
#ifndef NDEBUG
-bool IsValidCodePage(uint16_t codepage) {
+bool IsValidWideCodePage(uint16_t codepage) {
switch (codepage) {
case FX_CODEPAGE_DefANSI:
case FX_CODEPAGE_ShiftJIS:
@@ -288,7 +288,9 @@ bool IsValidCodePage(uint16_t codepage) {
#endif
WideString GetWideString(uint16_t codepage, const ByteStringView& bstr) {
- ASSERT(IsValidCodePage(codepage));
+#ifndef NDEBUG
+ ASSERT(IsValidWideCodePage(codepage));
+#endif
int src_len = bstr.GetLength();
int dest_len = FXSYS_MultiByteToWideChar(
@@ -940,8 +942,8 @@ size_t WideString::WStringLength(const unsigned short* str) {
}
void WideString::Trim() {
- TrimRight(kTrimChars);
- TrimLeft(kTrimChars);
+ TrimRight(kWideTrimChars);
+ TrimLeft(kWideTrimChars);
}
void WideString::Trim(wchar_t target) {
@@ -956,7 +958,7 @@ void WideString::Trim(const WideStringView& targets) {
}
void WideString::TrimLeft() {
- TrimLeft(kTrimChars);
+ TrimLeft(kWideTrimChars);
}
void WideString::TrimLeft(wchar_t target) {
@@ -994,7 +996,7 @@ void WideString::TrimLeft(const WideStringView& targets) {
}
void WideString::TrimRight() {
- TrimRight(kTrimChars);
+ TrimRight(kWideTrimChars);
}
void WideString::TrimRight(wchar_t target) {