8055045: StringIndexOutOfBoundsException while reading krb5.conf
Reviewed-by: mullan
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Config.java Wed Jul 05 20:16:23 2017 +0200
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Config.java Mon Jan 26 09:29:29 2015 +0800
@@ -913,9 +913,9 @@
private static String unquote(String s) {
s = s.trim();
- if (s.isEmpty()) return s;
- if (s.charAt(0) == '"' && s.charAt(s.length()-1) == '"' ||
- s.charAt(0) == '\'' && s.charAt(s.length()-1) == '\'') {
+ if (s.length() >= 2 &&
+ ((s.charAt(0) == '"' && s.charAt(s.length()-1) == '"') ||
+ (s.charAt(0) == '\'' && s.charAt(s.length()-1) == '\''))) {
s = s.substring(1, s.length()-1).trim();
}
return s;
--- a/jdk/test/sun/security/krb5/config/ParseConfig.java Wed Jul 05 20:16:23 2017 +0200
+++ b/jdk/test/sun/security/krb5/config/ParseConfig.java Mon Jan 26 09:29:29 2015 +0800
@@ -22,7 +22,7 @@
*/
/*
* @test
- * @bug 6319046
+ * @bug 6319046 8055045
* @compile -XDignore.symbol.file ParseConfig.java
* @run main/othervm ParseConfig
* @summary Problem with parsing krb5.conf
@@ -32,7 +32,8 @@
public class ParseConfig {
public static void main(String[] args) throws Exception {
- System.setProperty("java.security.krb5.conf", System.getProperty("test.src", ".") +"/krb5.conf");
+ System.setProperty("java.security.krb5.conf",
+ System.getProperty("test.src", ".") + "/krb5.conf");
Config config = Config.getInstance();
config.listTable();
@@ -44,5 +45,11 @@
expected + "\"");
}
}
+
+ // JDK-8055045: IOOBE when reading an empty value
+ config.get("empty1", "NOVAL.COM");
+ config.get("empty2", "NOVAL.COM");
+ config.get("quote1", "NOVAL.COM");
+ config.get("quote2", "NOVAL.COM");
}
}
--- a/jdk/test/sun/security/krb5/config/krb5.conf Wed Jul 05 20:16:23 2017 +0200
+++ b/jdk/test/sun/security/krb5/config/krb5.conf Mon Jan 26 09:29:29 2015 +0800
@@ -27,3 +27,9 @@
}
}
+ NOVAL.COM = {
+ empty1 =
+ empty2 =.
+ quote1 = "
+ quote2 = '
+ }