summaryrefslogtreecommitdiff
path: root/fpdfsdk
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2015-08-05 10:39:02 -0700
committerTom Sepez <tsepez@chromium.org>2015-08-05 10:39:02 -0700
commit2b9178181eb82a3611bee5c9435ea5956def24be (patch)
treefe7909a1b5338a328f9e53ec1501e72c675da1e7 /fpdfsdk
parent5cd398545141226f082b2f757f23c73303058a83 (diff)
downloadpdfium-2b9178181eb82a3611bee5c9435ea5956def24be.tar.xz
CPDF_Parser shouldnt be in the business of opening files
Move that operation closer to the embedder's call. R=thestig@chromium.org Review URL: https://codereview.chromium.org/1269073003 .
Diffstat (limited to 'fpdfsdk')
-rw-r--r--fpdfsdk/src/fpdfview.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/fpdfsdk/src/fpdfview.cpp b/fpdfsdk/src/fpdfview.cpp
index a419749e8e..8895dce076 100644
--- a/fpdfsdk/src/fpdfview.cpp
+++ b/fpdfsdk/src/fpdfview.cpp
@@ -155,12 +155,20 @@ DLLEXPORT void STDCALL FPDF_SetSandBoxPolicy(FPDF_DWORD policy,
return FSDK_SetSandBoxPolicy(policy, enable);
}
+
DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path,
FPDF_BYTESTRING password) {
+ // NOTE: the creation of the file needs to be by the embedder on the
+ // other side of this API.
+ IFX_FileRead* pFileAccess = FX_CreateFileRead((const FX_CHAR*)file_path);
+ if (!pFileAccess) {
+ return nullptr;
+ }
+
CPDF_Parser* pParser = new CPDF_Parser;
pParser->SetPassword(password);
- FX_DWORD err_code = pParser->StartParse((const FX_CHAR*)file_path);
+ FX_DWORD err_code = pParser->StartParse(pFileAccess);
if (err_code) {
delete pParser;
ProcessParseError(err_code);