Fix two issues shown by bug 489995
authorTom Sepez <tsepez@chromium.org>
Mon, 31 Aug 2015 21:44:21 +0000 (14:44 -0700)
committerTom Sepez <tsepez@chromium.org>
Mon, 31 Aug 2015 21:44:21 +0000 (14:44 -0700)
- 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 .

core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp
fpdfsdk/src/javascript/Document.cpp
testing/resources/javascript/document_methods.in
testing/resources/javascript/document_methods_expected.txt

index 9e14341..63454d2 100644 (file)
@@ -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;
index a879709..91805b8 100644 (file)
@@ -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();
index b2467f3..3cd3330 100644 (file)
@@ -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.
 }
index 753a99d..26f7b54 100644 (file)
@@ -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.