RFR: 8318200: String::newStringNoRepl and String::getBytesNoRepl does not throw CharacterCodingException

Chen Liang liach at openjdk.org
Tue Oct 17 03:12:21 UTC 2023


On Mon, 16 Oct 2023 22:27:34 GMT, Shaojin Wen <duke at openjdk.org> wrote:

> When calling String::newStringNoRepl and String::getBytesNoRepl, we need to use try...catch to handle CharacterCodingException and throw IllegalArgumentException instead of CharacterCodingException to make the calling code cleaner.

The thrown CCE was intended for `Files.readString` and `Files.writeString`, and is in reality, only used by those 2 sites. However, you missed updating those sites, so they now throw IAE instead of CCE, which should be fixed.

src/java.base/share/classes/java/lang/String.java line 932:

> 930: 
> 931:     private static byte[] getBytesNoRepl1(String s, Charset cs) {
> 932:         return getBytesNoRepl1(s, cs);

This method should probably be removed. This current implementation is an infinite recursion.

src/java.base/share/classes/java/util/zip/ZipCoder.java line 319:

> 317:                 }
> 318:             } catch (IllegalArgumentException e) {
> 319:                 return Comparison.NO_MATCH;

Should check if the cause is `CharacterCodingException`

-------------

Changes requested by liach (Author).

PR Review: https://git.openjdk.org/jdk/pull/16209#pullrequestreview-1681283802
PR Review Comment: https://git.openjdk.org/jdk/pull/16209#discussion_r1361455389
PR Review Comment: https://git.openjdk.org/jdk/pull/16209#discussion_r1361455717



More information about the security-dev mailing list