From aecd9d0c5cfc569269bfe6cc228efaab76a7bb1b Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Mon, 31 Aug 2015 15:04:12 -0700 Subject: Merge to XFA: Fix two issues shown by bug 489995 (cherry picked from commit 6e369c2ebb4769a42736b32154c0de12b73df45d) Original Review URL: https://codereview.chromium.org/1327473002 . BUG=489995 R=thestig@chromium.org TBR=thestig@chromium.org Review URL: https://codereview.chromium.org/1325743002 . --- core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp | 2 +- fpdfsdk/src/javascript/Document.cpp | 6 +++++- testing/resources/javascript/document_methods.in | 1 + testing/resources/javascript/document_methods_expected.txt | 1 + 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp index 9e1434139c..63454d2cb5 100644 --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp @@ -410,7 +410,7 @@ CFX_ByteTextBuf& operator<<(CFX_ByteTextBuf& buf, const CPDF_Object* pObj) { CFX_ByteString key; CPDF_Object* pValue = p->GetNextElement(pos, key); buf << FX_BSTRC("/") << PDF_NameEncode(key); - if (pValue->GetObjNum()) { + if (pValue && pValue->GetObjNum()) { buf << " " << pValue->GetObjNum() << FX_BSTRC(" 0 R "); } else { buf << pValue; diff --git a/fpdfsdk/src/javascript/Document.cpp b/fpdfsdk/src/javascript/Document.cpp index 7f078e5a5e..1e8d4fde8f 100644 --- a/fpdfsdk/src/javascript/Document.cpp +++ b/fpdfsdk/src/javascript/Document.cpp @@ -1408,8 +1408,12 @@ FX_BOOL Document::addIcon(IFXJS_Context* cc, sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); return FALSE; } - CFX_WideString swIconName = params[0].ToCFXWideString(); + + if (params[1].GetType() != VT_object) { + sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR); + return FALSE; + } JSFXObject pJSIcon = params[1].ToV8Object(); CJS_Runtime* pRuntime = pContext->GetJSRuntime(); diff --git a/testing/resources/javascript/document_methods.in b/testing/resources/javascript/document_methods.in index 662c05c8e0..cd43e32070 100644 --- a/testing/resources/javascript/document_methods.in +++ b/testing/resources/javascript/document_methods.in @@ -122,6 +122,7 @@ function testAddIcon() { // Second argument must actually be an icon. expectError('this.addIcon("myicon", 3)'); + expectError('this.addIcon("myicon", undefined)'); // TODO(tsepez): test success cases. } diff --git a/testing/resources/javascript/document_methods_expected.txt b/testing/resources/javascript/document_methods_expected.txt index 445b48d656..b373e9cb1b 100644 --- a/testing/resources/javascript/document_methods_expected.txt +++ b/testing/resources/javascript/document_methods_expected.txt @@ -71,6 +71,7 @@ Alert: PASS: this.addIcon() threw error Document.addIcon: Incorrect number of pa Alert: PASS: this.addIcon(1) threw error Document.addIcon: Incorrect number of parameters passed to function. Alert: PASS: this.addIcon(1, 2, 3) threw error Document.addIcon: Incorrect number of parameters passed to function. Alert: PASS: this.addIcon("myicon", 3) threw error Document.addIcon: Incorrect parameter type. +Alert: PASS: this.addIcon("myicon", undefined) threw error Document.addIcon: Incorrect parameter type. Alert: PASS: typeof this.calculateNow = function Alert: PASS: typeof this.deletePages = function Alert: PASS: typeof this.getField = function -- cgit v1.2.3