Uploaded image for project: 'PDFBox'
  1. PDFBox
  2. PDFBOX-2965

NPE in PDAcroForm.getField() if the /Fields entry is missing

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.8.10, 2.0.0
    • Fix Version/s: 1.8.11, 2.0.0
    • Component/s: AcroForm
    • Labels:
      None

      Description

      Form the users mailing list

      I get a lot of weird documents. When I try to set a particular field value, some of them throw NullPointerExceptions from line PDAcroForm.getField(), line 291:

      287: COSArray fields =
      288: (COSArray) acroForm.getDictionaryObject(
      289: COSName.getPDFName("Fields"));
      290:
      291: for (int i = 0; i < fields.size() && retval == null; i++)
      292:{

      To avoid this, at first I was calling PDAcroForm.getFields() and checking that to see if that was NULL but I realized that it would usually create a new fields array to return which seemed wasteful.

      Is the most efficient way to avoid this to first call:
      COSArray fields = (COSArray) acroForm.getDictionaryObject( COSName.getPDFName("Fields"));
      myself and check if that is NULL?

      Secondary Question:
      The method PDAcroForm.getFields() does a not-NULL check of fields before calling fields.size().
      Is there a reason that this check is not performed in getField()?

        Attachments

          Activity

            People

            • Assignee:
              msahyoun Maruan Sahyoun
              Reporter:
              msahyoun Maruan Sahyoun
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: