Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8161224

CONSTANT_NameAndType_info permits references to illegal names and descriptors

    XMLWordPrintable

    Details

    • Subcomponent:
    • Resolved In Build:
      b137
    • Verification:
      Not verified

      Description

      According to
      https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.6

      there is several requirements to name_index and descriptor_index references.
      1. name_index should point to valid field or method name. So, names which contains no characters or contains any of (.;/[) should be prohibited.

      Actual behaviour:
      names 'm[', 'm.', 'm/', m;', '', '/' are permitted (see tests at vm/classfmt/cpl/cplnat005/cplnat00501m_invalidname_v*)

      These names are prohibited in the case given NameAndType is referenced from fieldref, Methodref or InterfaceMethodref.

      2. descriptor_index should be valid method or field descriptor.
      Actual behaviour: descriptors containing classes with invalid binary names aren't prohibited. E.g. following descriptors are possible:
      Lt//T;
      Lt///T;
      Lt/T.;
      Lt/T[;
      Lt/T;;
      Lt/T.;
      Lt;/T;
      (Lt//T;)V
      (Lt/T[;)V
      ... etc, see more at vm/classfmt/cpl/cplnat006/cplnat00601m_method_invaliddesc_v* and vm/classfmt/cpl/cplnat006/cplnat00601m_field_invaliddesc_v* correspondingly.

      However some of bad methods signatures are prohibited (for version 53):
      (Lt/T;;)V
      (Lt;/T;)V
      ()Lt/T.;
      ()Lt/T;;
      ()Lt;/T;
      (Lt/T.;)V

      The behavour of 'unused' NameAndType structure and structure referenced by Fieldref/Methodref/InterfaceMethodref (unused) are the same.


      Was found on jdk9b123. Tests already in repository. Separate examples will be attached by request.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              rprotacio Rachel Protacio (Inactive)
              Reporter:
              asolodkaya Anastasiya Solodkaya (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: