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 1659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1670 } | 1670 } |
1671 CPDF_SyntaxParser::CPDF_SyntaxParser() | 1671 CPDF_SyntaxParser::CPDF_SyntaxParser() |
1672 { | 1672 { |
1673 m_pFileAccess = NULL; | 1673 m_pFileAccess = NULL; |
1674 m_pCryptoHandler = NULL; | 1674 m_pCryptoHandler = NULL; |
1675 m_pFileBuf = NULL; | 1675 m_pFileBuf = NULL; |
1676 m_BufSize = CPDF_ModuleMgr::Get()->m_FileBufSize; | 1676 m_BufSize = CPDF_ModuleMgr::Get()->m_FileBufSize; |
1677 m_pFileBuf = NULL; | 1677 m_pFileBuf = NULL; |
1678 m_MetadataObjnum = 0; | 1678 m_MetadataObjnum = 0; |
1679 m_dwWordPos = 0; | 1679 m_dwWordPos = 0; |
1680 #if defined(_FPDFAPI_MINI_) | |
1681 m_bFileStream = TRUE; | |
1682 #else | |
1683 m_bFileStream = FALSE; | 1680 m_bFileStream = FALSE; |
1684 #endif | |
1685 } | 1681 } |
1686 CPDF_SyntaxParser::~CPDF_SyntaxParser() | 1682 CPDF_SyntaxParser::~CPDF_SyntaxParser() |
1687 { | 1683 { |
1688 if (m_pFileBuf) { | 1684 if (m_pFileBuf) { |
1689 FX_Free(m_pFileBuf); | 1685 FX_Free(m_pFileBuf); |
1690 } | 1686 } |
1691 } | 1687 } |
1692 FX_BOOL CPDF_SyntaxParser::GetCharAt(FX_FILESIZE pos, FX_BYTE& ch) | 1688 FX_BOOL CPDF_SyntaxParser::GetCharAt(FX_FILESIZE pos, FX_BYTE& ch) |
1693 { | 1689 { |
1694 FX_FILESIZE save_pos = m_Pos; | 1690 FX_FILESIZE save_pos = m_Pos; |
(...skipping 767 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2462 } else { | 2458 } else { |
2463 m_Pos = StreamStartPos; | 2459 m_Pos = StreamStartPos; |
2464 if (FindTag(FX_BSTRC("endobj"), 0) < 0) { | 2460 if (FindTag(FX_BSTRC("endobj"), 0) < 0) { |
2465 return NULL; | 2461 return NULL; |
2466 } | 2462 } |
2467 } | 2463 } |
2468 } | 2464 } |
2469 m_Pos = StreamStartPos; | 2465 m_Pos = StreamStartPos; |
2470 } | 2466 } |
2471 CPDF_Stream* pStream; | 2467 CPDF_Stream* pStream; |
2472 #if defined(_FPDFAPI_MINI_) && !defined(_FXCORE_FEATURE_ALL_) | |
2473 pStream = FX_NEW CPDF_Stream(m_pFileAccess, pCryptoHandler, m_HeaderOffset +
m_Pos, len, pDict, gennum); | |
2474 m_Pos += len; | |
2475 #else | |
2476 FX_LPBYTE pData = FX_Alloc(FX_BYTE, len); | 2468 FX_LPBYTE pData = FX_Alloc(FX_BYTE, len); |
2477 if (!pData) { | 2469 if (!pData) { |
2478 return NULL; | 2470 return NULL; |
2479 } | 2471 } |
2480 ReadBlock(pData, len); | 2472 ReadBlock(pData, len); |
2481 if (pCryptoHandler) { | 2473 if (pCryptoHandler) { |
2482 CFX_BinaryBuf dest_buf; | 2474 CFX_BinaryBuf dest_buf; |
2483 dest_buf.EstimateSize(pCryptoHandler->DecryptGetSize(len)); | 2475 dest_buf.EstimateSize(pCryptoHandler->DecryptGetSize(len)); |
2484 FX_LPVOID context = pCryptoHandler->DecryptStart(objnum, gennum); | 2476 FX_LPVOID context = pCryptoHandler->DecryptStart(objnum, gennum); |
2485 pCryptoHandler->DecryptStream(context, pData, len, dest_buf); | 2477 pCryptoHandler->DecryptStream(context, pData, len, dest_buf); |
2486 pCryptoHandler->DecryptFinish(context, dest_buf); | 2478 pCryptoHandler->DecryptFinish(context, dest_buf); |
2487 FX_Free(pData); | 2479 FX_Free(pData); |
2488 pData = dest_buf.GetBuffer(); | 2480 pData = dest_buf.GetBuffer(); |
2489 len = dest_buf.GetSize(); | 2481 len = dest_buf.GetSize(); |
2490 dest_buf.DetachBuffer(); | 2482 dest_buf.DetachBuffer(); |
2491 } | 2483 } |
2492 pStream = FX_NEW CPDF_Stream(pData, len, pDict); | 2484 pStream = FX_NEW CPDF_Stream(pData, len, pDict); |
2493 #endif | |
2494 if (pContext) { | 2485 if (pContext) { |
2495 pContext->m_DataEnd = pContext->m_DataStart + len; | 2486 pContext->m_DataEnd = pContext->m_DataStart + len; |
2496 } | 2487 } |
2497 StreamStartPos = m_Pos; | 2488 StreamStartPos = m_Pos; |
2498 GetNextWord(); | 2489 GetNextWord(); |
2499 if (m_WordSize == 6 && 0 == FXSYS_memcmp32(m_WordBuffer, "endobj", 6)) { | 2490 if (m_WordSize == 6 && 0 == FXSYS_memcmp32(m_WordBuffer, "endobj", 6)) { |
2500 m_Pos = StreamStartPos; | 2491 m_Pos = StreamStartPos; |
2501 } | 2492 } |
2502 return pStream; | 2493 return pStream; |
2503 } | 2494 } |
(...skipping 1923 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4427 { | 4418 { |
4428 FX_INT32 iSize = m_childNode.GetSize(); | 4419 FX_INT32 iSize = m_childNode.GetSize(); |
4429 for (FX_INT32 i = 0; i < iSize; ++i) { | 4420 for (FX_INT32 i = 0; i < iSize; ++i) { |
4430 CPDF_PageNode *pNode = (CPDF_PageNode*)m_childNode[i]; | 4421 CPDF_PageNode *pNode = (CPDF_PageNode*)m_childNode[i]; |
4431 if (pNode) { | 4422 if (pNode) { |
4432 delete pNode; | 4423 delete pNode; |
4433 } | 4424 } |
4434 } | 4425 } |
4435 m_childNode.RemoveAll(); | 4426 m_childNode.RemoveAll(); |
4436 } | 4427 } |
OLD | NEW |