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

Properties.load fails to throw IAE on malformed unicode in certain circumstances

XMLWordPrintable

    • Icon: CSR CSR
    • Resolution: Approved
    • Icon: P4 P4
    • 13
    • core-libs
    • None
    • behavioral
    • minimal
    • Throw exception as specified.
    • Java API
    • Implementation

      Summary

      Change loading of properties files with malformed unicode escape sequences to always fail with IllegalArgumentException.

      Problem

      Certain sequences of properties ending with malformed unicode escape sequences can silently and erroneously be parsed to contain residual values from a preceding line in the property file. Fixing this straight forward bug could theoretically cause some property files that were previously parsed successfully (though incorrectly) without throwing an exception to instead throw an exception.

      A property file with malformed unicode sequences is specified to throw IllegalArgumentException. This happen correctly most of the time, e.g., when loading a file looking like this:

      "key=value\u00ps\n"

      But when the malformed unicode codepoint is at the end of a line and there's a preceding line with data that would have been valid had it been on the current line, the unicode codepoint might silently be parsed using the content of the preceding line. For example this properties file:

      "key1=foo\u0123\nkey2=bar\u0\n"

      Here the value of key2 will be parsed as if it was 'bar\u0123'. According to the specification, this should throw an IllegalArgumentException.

      Solution

      Fix the bug and always throw an IllegalArgumentException.

      Specification

      No specification change. The behavior is changed to adhere more strictly to the specification after bug is fixed.

            redestad Claes Redestad
            redestad Claes Redestad
            Stuart Marks
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: