mirror of
https://github.com/openjdk/jdk.git
synced 2026-05-15 16:09:44 +00:00
6714845: Quotes in Kerberos configuration file are included in the values
Reviewed-by: xuelei
This commit is contained in:
parent
0470f91e7f
commit
2827ff39e5
@ -736,6 +736,14 @@ public class Config {
|
||||
return name;
|
||||
}
|
||||
|
||||
private static String trimmed(String s) {
|
||||
s = s.trim();
|
||||
if (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;
|
||||
}
|
||||
/**
|
||||
* Parses key-value pairs under a stanza name.
|
||||
*/
|
||||
@ -747,7 +755,7 @@ public class Config {
|
||||
for (int j = 0; j < line.length(); j++) {
|
||||
if (line.charAt(j) == '=') {
|
||||
String key = (line.substring(0, j)).trim();
|
||||
String value = (line.substring(j + 1)).trim();
|
||||
String value = trimmed(line.substring(j + 1));
|
||||
table.put(key, value);
|
||||
break;
|
||||
}
|
||||
@ -820,7 +828,7 @@ public class Config {
|
||||
} else {
|
||||
nameVector = table.get(key);
|
||||
}
|
||||
nameVector.addElement((line.substring(j + 1)).trim());
|
||||
nameVector.addElement(trimmed(line.substring(j + 1)));
|
||||
table.put(key, nameVector);
|
||||
break;
|
||||
}
|
||||
@ -1263,4 +1271,32 @@ public class Config {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
toStringIndented("", stanzaTable, sb);
|
||||
return sb.toString();
|
||||
}
|
||||
private static void toStringIndented(String prefix, Object obj,
|
||||
StringBuffer sb) {
|
||||
if (obj instanceof String) {
|
||||
sb.append(prefix);
|
||||
sb.append(obj);
|
||||
sb.append('\n');
|
||||
} else if (obj instanceof Hashtable) {
|
||||
Hashtable tab = (Hashtable)obj;
|
||||
for (Object o: tab.keySet()) {
|
||||
sb.append(prefix);
|
||||
sb.append(o);
|
||||
sb.append(" = {\n");
|
||||
toStringIndented(prefix + " ", tab.get(o), sb);
|
||||
sb.append(prefix + "}\n");
|
||||
}
|
||||
} else if (obj instanceof Vector) {
|
||||
Vector v = (Vector)obj;
|
||||
for (Object o: v.toArray()) {
|
||||
toStringIndented(prefix + " ", o, sb);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
47
jdk/test/sun/security/krb5/ConfigWithQuotations.java
Normal file
47
jdk/test/sun/security/krb5/ConfigWithQuotations.java
Normal file
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* @test
|
||||
* @bug 6714845
|
||||
* @summary Quotes in Kerberos configuration file are included in the values
|
||||
*/
|
||||
|
||||
import sun.security.krb5.Config;
|
||||
|
||||
public class ConfigWithQuotations {
|
||||
public static void main(String[] args) throws Exception {
|
||||
// This config file is generated using Kerberos.app on a Mac
|
||||
System.setProperty("java.security.krb5.conf",
|
||||
System.getProperty("test.src", ".") +"/edu.mit.Kerberos");
|
||||
Config config = Config.getInstance();
|
||||
|
||||
System.out.println(config);
|
||||
|
||||
if (!config.getDefaultRealm().equals("MAC.LOCAL")) {
|
||||
throw new Exception("Realm error");
|
||||
}
|
||||
if (!config.getKDCList("MAC.LOCAL").equals("kdc.mac.local:88")) {
|
||||
throw new Exception("KDC error");
|
||||
}
|
||||
}
|
||||
}
|
||||
15
jdk/test/sun/security/krb5/edu.mit.Kerberos
Normal file
15
jdk/test/sun/security/krb5/edu.mit.Kerberos
Normal file
@ -0,0 +1,15 @@
|
||||
[domain_realm]
|
||||
|
||||
[libdefaults]
|
||||
default_realm = "MAC.LOCAL"
|
||||
dns_fallback = "no"
|
||||
|
||||
[logging]
|
||||
admin_server = "FILE:/var/log/krb5kdc/kadmin.log"
|
||||
kdc = "FILE:/var/log/krb5kdc/kdc.log"
|
||||
|
||||
[realms]
|
||||
MAC.LOCAL = {
|
||||
kdc = "kdc.mac.local:88"
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user