src/share/classes/sun/security/krb5/Config.java
Print this page
rev 7199 : 8014310: JAAS/Krb5LoginModule using des encytypes failure with NPE after JDK-8012679
@@ -778,26 +778,27 @@
public void listTable() {
System.out.println(this);
}
/**
- * Returns the default encryption types.
- *
+ * Returns all etypes specified in krb5.conf for the given configName,
+ * or all the builtin defaults. This result is always non-empty.
+ * If no etypes are found, an exception is thrown.
*/
- public int[] defaultEtype(String enctypes) {
+ public int[] defaultEtype(String configName) throws KrbException {
String default_enctypes;
- default_enctypes = get("libdefaults", enctypes);
- String delim = " ";
- StringTokenizer st;
+ default_enctypes = get("libdefaults", configName);
int[] etype;
if (default_enctypes == null) {
if (DEBUG) {
System.out.println("Using builtin default etypes for " +
- enctypes);
+ configName);
}
etype = EType.getBuiltInDefaults();
} else {
+ String delim = " ";
+ StringTokenizer st;
for (int j = 0; j < default_enctypes.length(); j++) {
if (default_enctypes.substring(j, j + 1).equals(",")) {
// only two delimiters are allowed to use
// according to Kerberos DCE doc.
delim = ",";
@@ -808,31 +809,27 @@
int len = st.countTokens();
ArrayList<Integer> ls = new ArrayList<>(len);
int type;
for (int i = 0; i < len; i++) {
type = Config.getType(st.nextToken());
- if ((type != -1) &&
- (EType.isSupported(type))) {
+ if (type != -1 && EType.isSupported(type)) {
ls.add(type);
}
}
if (ls.isEmpty()) {
- if (DEBUG) {
- System.out.println(
- "no supported default etypes for " + enctypes);
- }
- return null;
+ throw new KrbException("no supported default etypes for "
+ + configName);
} else {
etype = new int[ls.size()];
for (int i = 0; i < etype.length; i++) {
etype[i] = ls.get(i);
}
}
}
if (DEBUG) {
- System.out.print("default etypes for " + enctypes + ":");
+ System.out.print("default etypes for " + configName + ":");
for (int i = 0; i < etype.length; i++) {
System.out.print(" " + etype[i]);
}
System.out.println(".");
}