Enable security removal in FPDF_Doc_Save
R=jam@chromium.org
Review URL: https://codereview.chromium.org/333753002
diff --git a/core/include/fpdfapi/fpdf_serial.h b/core/include/fpdfapi/fpdf_serial.h
index 87ec7b5..a91870b 100644
--- a/core/include/fpdfapi/fpdf_serial.h
+++ b/core/include/fpdfapi/fpdf_serial.h
@@ -1,7 +1,7 @@
// Copyright 2014 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-
+
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
#ifndef _FPDF_SERIAL_
@@ -121,6 +121,8 @@
~CPDF_Creator();
+ void RemoveSecurity();
+
FX_BOOL Create(FX_LPCWSTR filename, FX_DWORD flags = 0);
FX_BOOL Create(FX_LPCSTR filename, FX_DWORD flags = 0);
diff --git a/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp b/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
index e5bb1cf..bdbcccd 100644
--- a/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
+++ b/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
@@ -1,7 +1,7 @@
// Copyright 2014 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-
+
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
#include "../../../include/fpdfapi/fpdf_serial.h"
@@ -2113,6 +2113,13 @@
m_FileVersion = fileVersion;
return TRUE;
}
+void CPDF_Creator::RemoveSecurity()
+{
+ ResetStandardSecurity();
+ m_bSecurityChanged = TRUE;
+ m_pEncryptDict = NULL;
+ m_pCryptoHandler = NULL;
+}
void CPDF_Creator::ResetStandardSecurity()
{
if ((m_bStandardSecurity || m_bNewCrypto) && m_pCryptoHandler) {
diff --git a/fpdfsdk/include/fpdfsave.h b/fpdfsdk/include/fpdfsave.h
index a694560..0909d5a 100644
--- a/fpdfsdk/include/fpdfsave.h
+++ b/fpdfsdk/include/fpdfsave.h
@@ -47,7 +47,8 @@
#define FPDF_INCREMENTAL 1
/** @brief No Incremental. */
#define FPDF_NO_INCREMENTAL 2
-
+/** @brief Remove security. */
+#define FPDF_REMOVE_SECURITY 3
// Function: FPDF_SaveAsCopy
// Saves the copy of specified document in custom way.
diff --git a/fpdfsdk/src/fpdfsave.cpp b/fpdfsdk/src/fpdfsave.cpp
index 0c7acc8..6637c78 100644
--- a/fpdfsdk/src/fpdfsave.cpp
+++ b/fpdfsdk/src/fpdfsave.cpp
@@ -60,7 +60,7 @@
if (!pDoc)
return 0;
- if ( flags < 1 || flags > 2 )
+ if ( flags < FPDF_INCREMENTAL || flags > FPDF_REMOVE_SECURITY )
{
flags = 0;
}
@@ -68,6 +68,11 @@
CPDF_Creator FileMaker(pDoc);
if(bSetVersion)
FileMaker.SetFileVersion(fileVerion);
+ if(flags == FPDF_REMOVE_SECURITY)
+ {
+ flags = 0;
+ FileMaker.RemoveSecurity();
+ }
CFX_IFileWrite* pStreamWrite = NULL;
FX_BOOL bRet;
pStreamWrite = new CFX_IFileWrite;