OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "../../../include/fpdfapi/fpdf_parser.h" | 7 #include "../../../include/fpdfapi/fpdf_parser.h" |
8 #include "../../../include/fpdfapi/fpdf_module.h" | 8 #include "../../../include/fpdfapi/fpdf_module.h" |
9 #include "../../../include/fpdfapi/fpdf_page.h" | 9 #include "../../../include/fpdfapi/fpdf_page.h" |
10 #include "../../../../third_party/numerics/safe_math.h" | 10 #include "../../../../third_party/numerics/safe_math.h" |
(...skipping 1663 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1674 } | 1674 } |
1675 CPDF_SyntaxParser::CPDF_SyntaxParser() | 1675 CPDF_SyntaxParser::CPDF_SyntaxParser() |
1676 { | 1676 { |
1677 m_pFileAccess = NULL; | 1677 m_pFileAccess = NULL; |
1678 m_pCryptoHandler = NULL; | 1678 m_pCryptoHandler = NULL; |
1679 m_pFileBuf = NULL; | 1679 m_pFileBuf = NULL; |
1680 m_BufSize = CPDF_ModuleMgr::Get()->m_FileBufSize; | 1680 m_BufSize = CPDF_ModuleMgr::Get()->m_FileBufSize; |
1681 m_pFileBuf = NULL; | 1681 m_pFileBuf = NULL; |
1682 m_MetadataObjnum = 0; | 1682 m_MetadataObjnum = 0; |
1683 m_dwWordPos = 0; | 1683 m_dwWordPos = 0; |
1684 #if defined(_FPDFAPI_MINI_) | |
1685 m_bFileStream = TRUE; | |
1686 #else | |
1687 m_bFileStream = FALSE; | 1684 m_bFileStream = FALSE; |
1688 #endif | |
1689 } | 1685 } |
1690 CPDF_SyntaxParser::~CPDF_SyntaxParser() | 1686 CPDF_SyntaxParser::~CPDF_SyntaxParser() |
1691 { | 1687 { |
1692 if (m_pFileBuf) { | 1688 if (m_pFileBuf) { |
1693 FX_Free(m_pFileBuf); | 1689 FX_Free(m_pFileBuf); |
1694 } | 1690 } |
1695 } | 1691 } |
1696 FX_BOOL CPDF_SyntaxParser::GetCharAt(FX_FILESIZE pos, FX_BYTE& ch) | 1692 FX_BOOL CPDF_SyntaxParser::GetCharAt(FX_FILESIZE pos, FX_BYTE& ch) |
1697 { | 1693 { |
1698 FX_FILESIZE save_pos = m_Pos; | 1694 FX_FILESIZE save_pos = m_Pos; |
(...skipping 767 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2466 } else { | 2462 } else { |
2467 m_Pos = StreamStartPos; | 2463 m_Pos = StreamStartPos; |
2468 if (FindTag(FX_BSTRC("endobj"), 0) < 0) { | 2464 if (FindTag(FX_BSTRC("endobj"), 0) < 0) { |
2469 return NULL; | 2465 return NULL; |
2470 } | 2466 } |
2471 } | 2467 } |
2472 } | 2468 } |
2473 m_Pos = StreamStartPos; | 2469 m_Pos = StreamStartPos; |
2474 } | 2470 } |
2475 CPDF_Stream* pStream; | 2471 CPDF_Stream* pStream; |
2476 #if defined(_FPDFAPI_MINI_) && !defined(_FXCORE_FEATURE_ALL_) | |
2477 pStream = FX_NEW CPDF_Stream(m_pFileAccess, pCryptoHandler, m_HeaderOffset +
m_Pos, len, pDict, gennum); | |
2478 m_Pos += len; | |
2479 #else | |
2480 FX_LPBYTE pData = FX_Alloc(FX_BYTE, len); | 2472 FX_LPBYTE pData = FX_Alloc(FX_BYTE, len); |
2481 if (!pData) { | 2473 if (!pData) { |
2482 return NULL; | 2474 return NULL; |
2483 } | 2475 } |
2484 ReadBlock(pData, len); | 2476 ReadBlock(pData, len); |
2485 if (pCryptoHandler) { | 2477 if (pCryptoHandler) { |
2486 CFX_BinaryBuf dest_buf; | 2478 CFX_BinaryBuf dest_buf; |
2487 dest_buf.EstimateSize(pCryptoHandler->DecryptGetSize(len)); | 2479 dest_buf.EstimateSize(pCryptoHandler->DecryptGetSize(len)); |
2488 FX_LPVOID context = pCryptoHandler->DecryptStart(objnum, gennum); | 2480 FX_LPVOID context = pCryptoHandler->DecryptStart(objnum, gennum); |
2489 pCryptoHandler->DecryptStream(context, pData, len, dest_buf); | 2481 pCryptoHandler->DecryptStream(context, pData, len, dest_buf); |
2490 pCryptoHandler->DecryptFinish(context, dest_buf); | 2482 pCryptoHandler->DecryptFinish(context, dest_buf); |
2491 FX_Free(pData); | 2483 FX_Free(pData); |
2492 pData = dest_buf.GetBuffer(); | 2484 pData = dest_buf.GetBuffer(); |
2493 len = dest_buf.GetSize(); | 2485 len = dest_buf.GetSize(); |
2494 dest_buf.DetachBuffer(); | 2486 dest_buf.DetachBuffer(); |
2495 } | 2487 } |
2496 pStream = FX_NEW CPDF_Stream(pData, len, pDict); | 2488 pStream = FX_NEW CPDF_Stream(pData, len, pDict); |
2497 #endif | |
2498 if (pContext) { | 2489 if (pContext) { |
2499 pContext->m_DataEnd = pContext->m_DataStart + len; | 2490 pContext->m_DataEnd = pContext->m_DataStart + len; |
2500 } | 2491 } |
2501 StreamStartPos = m_Pos; | 2492 StreamStartPos = m_Pos; |
2502 GetNextWord(); | 2493 GetNextWord(); |
2503 if (m_WordSize == 6 && 0 == FXSYS_memcmp32(m_WordBuffer, "endobj", 6)) { | 2494 if (m_WordSize == 6 && 0 == FXSYS_memcmp32(m_WordBuffer, "endobj", 6)) { |
2504 m_Pos = StreamStartPos; | 2495 m_Pos = StreamStartPos; |
2505 } | 2496 } |
2506 return pStream; | 2497 return pStream; |
2507 } | 2498 } |
(...skipping 1923 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4431 { | 4422 { |
4432 FX_INT32 iSize = m_childNode.GetSize(); | 4423 FX_INT32 iSize = m_childNode.GetSize(); |
4433 for (FX_INT32 i = 0; i < iSize; ++i) { | 4424 for (FX_INT32 i = 0; i < iSize; ++i) { |
4434 CPDF_PageNode *pNode = (CPDF_PageNode*)m_childNode[i]; | 4425 CPDF_PageNode *pNode = (CPDF_PageNode*)m_childNode[i]; |
4435 if (pNode) { | 4426 if (pNode) { |
4436 delete pNode; | 4427 delete pNode; |
4437 } | 4428 } |
4438 } | 4429 } |
4439 m_childNode.RemoveAll(); | 4430 m_childNode.RemoveAll(); |
4440 } | 4431 } |
OLD | NEW |