| 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 "core/fpdfapi/edit/editint.h" | 7 #include "core/fpdfapi/edit/editint.h" |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 break; | 121 break; |
| 122 } | 122 } |
| 123 case CPDF_Object::DICTIONARY: { | 123 case CPDF_Object::DICTIONARY: { |
| 124 if (pFile->AppendString("<<") < 0) { | 124 if (pFile->AppendString("<<") < 0) { |
| 125 return -1; | 125 return -1; |
| 126 } | 126 } |
| 127 offset += 2; | 127 offset += 2; |
| 128 const CPDF_Dictionary* p = pObj->AsDictionary(); | 128 const CPDF_Dictionary* p = pObj->AsDictionary(); |
| 129 for (const auto& it : *p) { | 129 for (const auto& it : *p) { |
| 130 const CFX_ByteString& key = it.first; | 130 const CFX_ByteString& key = it.first; |
| 131 CPDF_Object* pValue = it.second; | 131 CPDF_Object* pValue = it.second.get(); |
| 132 if (pFile->AppendString("/") < 0) { | 132 if (pFile->AppendString("/") < 0) { |
| 133 return -1; | 133 return -1; |
| 134 } | 134 } |
| 135 if ((len = pFile->AppendString(PDF_NameEncode(key).AsStringC())) < 0) { | 135 if ((len = pFile->AppendString(PDF_NameEncode(key).AsStringC())) < 0) { |
| 136 return -1; | 136 return -1; |
| 137 } | 137 } |
| 138 offset += len + 1; | 138 offset += len + 1; |
| 139 if (!pValue->IsInline()) { | 139 if (!pValue->IsInline()) { |
| 140 if (pFile->AppendString(" ") < 0) { | 140 if (pFile->AppendString(" ") < 0) { |
| 141 return -1; | 141 return -1; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 190 int32_t PDF_CreatorWriteTrailer(CPDF_Document* pDocument, | 190 int32_t PDF_CreatorWriteTrailer(CPDF_Document* pDocument, |
| 191 CFX_FileBufferArchive* pFile, | 191 CFX_FileBufferArchive* pFile, |
| 192 CPDF_Array* pIDArray) { | 192 CPDF_Array* pIDArray) { |
| 193 FX_FILESIZE offset = 0; | 193 FX_FILESIZE offset = 0; |
| 194 int32_t len = 0; | 194 int32_t len = 0; |
| 195 CPDF_Parser* pParser = pDocument->GetParser(); | 195 CPDF_Parser* pParser = pDocument->GetParser(); |
| 196 if (pParser) { | 196 if (pParser) { |
| 197 CPDF_Dictionary* p = pParser->GetTrailer(); | 197 CPDF_Dictionary* p = pParser->GetTrailer(); |
| 198 for (const auto& it : *p) { | 198 for (const auto& it : *p) { |
| 199 const CFX_ByteString& key = it.first; | 199 const CFX_ByteString& key = it.first; |
| 200 CPDF_Object* pValue = it.second; | 200 CPDF_Object* pValue = it.second.get(); |
| 201 if (key == "Encrypt" || key == "Size" || key == "Filter" || | 201 if (key == "Encrypt" || key == "Size" || key == "Filter" || |
| 202 key == "Index" || key == "Length" || key == "Prev" || key == "W" || | 202 key == "Index" || key == "Length" || key == "Prev" || key == "W" || |
| 203 key == "XRefStm" || key == "Type" || key == "ID") { | 203 key == "XRefStm" || key == "Type" || key == "ID") { |
| 204 continue; | 204 continue; |
| 205 } | 205 } |
| 206 if (key == "DecodeParms") | 206 if (key == "DecodeParms") |
| 207 continue; | 207 continue; |
| 208 | 208 |
| 209 if (pFile->AppendString(("/")) < 0) { | 209 if (pFile->AppendString(("/")) < 0) { |
| 210 return -1; | 210 return -1; |
| (...skipping 974 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1185 return PDF_CreatorAppendObject(pObj, &m_File, m_Offset); | 1185 return PDF_CreatorAppendObject(pObj, &m_File, m_Offset); |
| 1186 if (m_File.AppendString("<<") < 0) | 1186 if (m_File.AppendString("<<") < 0) |
| 1187 return -1; | 1187 return -1; |
| 1188 | 1188 |
| 1189 m_Offset += 2; | 1189 m_Offset += 2; |
| 1190 const CPDF_Dictionary* p = pObj->AsDictionary(); | 1190 const CPDF_Dictionary* p = pObj->AsDictionary(); |
| 1191 bool bSignDict = p->IsSignatureDict(); | 1191 bool bSignDict = p->IsSignatureDict(); |
| 1192 for (const auto& it : *p) { | 1192 for (const auto& it : *p) { |
| 1193 FX_BOOL bSignValue = FALSE; | 1193 FX_BOOL bSignValue = FALSE; |
| 1194 const CFX_ByteString& key = it.first; | 1194 const CFX_ByteString& key = it.first; |
| 1195 CPDF_Object* pValue = it.second; | 1195 CPDF_Object* pValue = it.second.get(); |
| 1196 if (m_File.AppendString("/") < 0) { | 1196 if (m_File.AppendString("/") < 0) { |
| 1197 return -1; | 1197 return -1; |
| 1198 } | 1198 } |
| 1199 if ((len = m_File.AppendString(PDF_NameEncode(key).AsStringC())) < 0) { | 1199 if ((len = m_File.AppendString(PDF_NameEncode(key).AsStringC())) < 0) { |
| 1200 return -1; | 1200 return -1; |
| 1201 } | 1201 } |
| 1202 m_Offset += len + 1; | 1202 m_Offset += len + 1; |
| 1203 if (bSignDict && key == "Contents") { | 1203 if (bSignDict && key == "Contents") { |
| 1204 bSignValue = TRUE; | 1204 bSignValue = TRUE; |
| 1205 } | 1205 } |
| (...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1707 return -1; | 1707 return -1; |
| 1708 } | 1708 } |
| 1709 if (m_File.AppendString(" 0 obj <<") < 0) { | 1709 if (m_File.AppendString(" 0 obj <<") < 0) { |
| 1710 return -1; | 1710 return -1; |
| 1711 } | 1711 } |
| 1712 } | 1712 } |
| 1713 if (m_pParser) { | 1713 if (m_pParser) { |
| 1714 CPDF_Dictionary* p = m_pParser->GetTrailer(); | 1714 CPDF_Dictionary* p = m_pParser->GetTrailer(); |
| 1715 for (const auto& it : *p) { | 1715 for (const auto& it : *p) { |
| 1716 const CFX_ByteString& key = it.first; | 1716 const CFX_ByteString& key = it.first; |
| 1717 CPDF_Object* pValue = it.second; | 1717 CPDF_Object* pValue = it.second.get(); |
| 1718 // TODO(ochang): Consolidate with similar check in | 1718 // TODO(ochang): Consolidate with similar check in |
| 1719 // PDF_CreatorWriteTrailer. | 1719 // PDF_CreatorWriteTrailer. |
| 1720 if (key == "Encrypt" || key == "Size" || key == "Filter" || | 1720 if (key == "Encrypt" || key == "Size" || key == "Filter" || |
| 1721 key == "Index" || key == "Length" || key == "Prev" || key == "W" || | 1721 key == "Index" || key == "Length" || key == "Prev" || key == "W" || |
| 1722 key == "XRefStm" || key == "ID") { | 1722 key == "XRefStm" || key == "ID") { |
| 1723 continue; | 1723 continue; |
| 1724 } | 1724 } |
| 1725 if (m_File.AppendString(("/")) < 0) { | 1725 if (m_File.AppendString(("/")) < 0) { |
| 1726 return -1; | 1726 return -1; |
| 1727 } | 1727 } |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2013 m_pCryptoHandler = nullptr; | 2013 m_pCryptoHandler = nullptr; |
| 2014 } | 2014 } |
| 2015 void CPDF_Creator::ResetStandardSecurity() { | 2015 void CPDF_Creator::ResetStandardSecurity() { |
| 2016 if (!m_bLocalCryptoHandler) | 2016 if (!m_bLocalCryptoHandler) |
| 2017 return; | 2017 return; |
| 2018 | 2018 |
| 2019 delete m_pCryptoHandler; | 2019 delete m_pCryptoHandler; |
| 2020 m_pCryptoHandler = nullptr; | 2020 m_pCryptoHandler = nullptr; |
| 2021 m_bLocalCryptoHandler = FALSE; | 2021 m_bLocalCryptoHandler = FALSE; |
| 2022 } | 2022 } |
| OLD | NEW |