diff options
author | Tom Sepez <tsepez@chromium.org> | 2015-08-31 14:44:21 -0700 |
---|---|---|
committer | Tom Sepez <tsepez@chromium.org> | 2015-08-31 14:44:21 -0700 |
commit | 6e369c2ebb4769a42736b32154c0de12b73df45d (patch) | |
tree | 60bde53605565d86478d3d4c3c51ae58f180640c | |
parent | 7858c0aae5ee449dafe23c0e1aa0c164ae2889eb (diff) | |
download | pdfium-6e369c2ebb4769a42736b32154c0de12b73df45d.tar.xz |
Fix two issues shown by bug 489995
- Handle NULL in buffer operator<< under JS mailForm() calls.
- Ensure correct type in JS addIcon() calls.
BUG=489995
R=brucedawson@chromium.org, thestig@chromium.org
Review URL: https://codereview.chromium.org/1327473002 .
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 a8797095d8..91805b825e 100644 --- a/fpdfsdk/src/javascript/Document.cpp +++ b/fpdfsdk/src/javascript/Document.cpp @@ -1367,8 +1367,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 b2467f37c4..3cd3330b87 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 753a99df6e..26f7b542dd 100644 --- a/testing/resources/javascript/document_methods_expected.txt +++ b/testing/resources/javascript/document_methods_expected.txt @@ -77,6 +77,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.getField = function Alert: PASS: this.getField() threw error Document.getField: Incorrect number of parameters passed to function. |