Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(393)

Side by Side Diff: core/fpdfapi/fpdf_parser/cpdf_parser.cpp

Issue 2005653002: Distinguish between user and owner passwords. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: rebase Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 PDFium Authors. All rights reserved. 1 // Copyright 2016 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 "core/fpdfapi/fpdf_parser/include/cpdf_parser.h" 7 #include "core/fpdfapi/fpdf_parser/include/cpdf_parser.h"
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 1461 matching lines...) Expand 10 before | Expand all | Expand 10 after
1472 if (m_pSyntax->GetKeyword() != "trailer") 1472 if (m_pSyntax->GetKeyword() != "trailer")
1473 return nullptr; 1473 return nullptr;
1474 1474
1475 std::unique_ptr<CPDF_Object, ReleaseDeleter<CPDF_Object>> pObj( 1475 std::unique_ptr<CPDF_Object, ReleaseDeleter<CPDF_Object>> pObj(
1476 m_pSyntax->GetObject(m_pDocument, 0, 0, true)); 1476 m_pSyntax->GetObject(m_pDocument, 0, 0, true));
1477 if (!ToDictionary(pObj.get())) 1477 if (!ToDictionary(pObj.get()))
1478 return nullptr; 1478 return nullptr;
1479 return pObj.release()->AsDictionary(); 1479 return pObj.release()->AsDictionary();
1480 } 1480 }
1481 1481
1482 uint32_t CPDF_Parser::GetPermissions(FX_BOOL bCheckRevision) { 1482 uint32_t CPDF_Parser::GetPermissions() const {
1483 if (!m_pSecurityHandler) 1483 if (!m_pSecurityHandler)
1484 return (uint32_t)-1; 1484 return 0xFFFFFFFF;
1485 1485
1486 uint32_t dwPermission = m_pSecurityHandler->GetPermissions(); 1486 uint32_t dwPermission = m_pSecurityHandler->GetPermissions();
1487 if (m_pEncryptDict && m_pEncryptDict->GetStringBy("Filter") == "Standard") { 1487 if (m_pEncryptDict && m_pEncryptDict->GetStringBy("Filter") == "Standard") {
1488 // See PDF Reference 1.7, page 123, table 3.20.
1488 dwPermission &= 0xFFFFFFFC; 1489 dwPermission &= 0xFFFFFFFC;
1489 dwPermission |= 0xFFFFF0C0; 1490 dwPermission |= 0xFFFFF0C0;
1490 if (bCheckRevision && m_pEncryptDict->GetIntegerBy("R") == 2)
1491 dwPermission &= 0xFFFFF0FF;
1492 } 1491 }
1493 return dwPermission; 1492 return dwPermission;
1494 } 1493 }
1495 1494
1496 FX_BOOL CPDF_Parser::IsLinearizedFile(IFX_FileRead* pFileAccess, 1495 FX_BOOL CPDF_Parser::IsLinearizedFile(IFX_FileRead* pFileAccess,
1497 uint32_t offset) { 1496 uint32_t offset) {
1498 m_pSyntax->InitParser(pFileAccess, offset); 1497 m_pSyntax->InitParser(pFileAccess, offset);
1499 m_pSyntax->RestorePos(m_pSyntax->m_HeaderOffset + 9); 1498 m_pSyntax->RestorePos(m_pSyntax->m_HeaderOffset + 9);
1500 1499
1501 FX_FILESIZE SavedPos = m_pSyntax->SavePos(); 1500 FX_FILESIZE SavedPos = m_pSyntax->SavePos();
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
1670 if (!LoadLinearizedAllCrossRefV4(m_LastXRefOffset, m_dwXrefStartObjNum) && 1669 if (!LoadLinearizedAllCrossRefV4(m_LastXRefOffset, m_dwXrefStartObjNum) &&
1671 !LoadLinearizedAllCrossRefV5(m_LastXRefOffset)) { 1670 !LoadLinearizedAllCrossRefV5(m_LastXRefOffset)) {
1672 m_LastXRefOffset = 0; 1671 m_LastXRefOffset = 0;
1673 m_pSyntax->m_MetadataObjnum = dwSaveMetadataObjnum; 1672 m_pSyntax->m_MetadataObjnum = dwSaveMetadataObjnum;
1674 return FORMAT_ERROR; 1673 return FORMAT_ERROR;
1675 } 1674 }
1676 1675
1677 m_pSyntax->m_MetadataObjnum = dwSaveMetadataObjnum; 1676 m_pSyntax->m_MetadataObjnum = dwSaveMetadataObjnum;
1678 return SUCCESS; 1677 return SUCCESS;
1679 } 1678 }
OLDNEW
« no previous file with comments | « core/fpdfapi/fpdf_parser/cpdf_document.cpp ('k') | core/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698