8198352: java.util.MissingResourceException: sun.security.util.AuthResources when trying to use com.sun.security.auth.module.UnixLoginModule
Reviewed-by: xuelei
--- a/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericGroupPrincipal.java Sun Jul 08 20:00:46 2018 -0400
+++ b/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericGroupPrincipal.java Mon Jul 09 12:20:56 2018 +0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. 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
@@ -26,6 +26,7 @@
package com.sun.security.auth;
import java.security.Principal;
+import java.util.Objects;
/**
* This class implements the {@code Principal} interface
@@ -195,6 +196,6 @@
* @return a hash code for this {@code UnixNumericGroupPrincipal}.
*/
public int hashCode() {
- return toString().hashCode();
+ return Objects.hash(name, isPrimaryGroup());
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/security/auth/UnixPrincipalHashCode.java Mon Jul 09 12:20:56 2018 +0800
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8198352
+ * @requires os.family != "windows"
+ * @run main/othervm/policy=uphc.policy
+ * -Djava.security.auth.login.config=uphc.conf
+ * UnixPrincipalHashCode
+ * @summary java.util.MissingResourceException: sun.security.util.AuthResources
+ * when trying to use com.sun.security.auth.module.UnixLoginModule
+ */
+
+import javax.security.auth.Subject;
+import javax.security.auth.login.LoginContext;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.security.PrivilegedAction;
+import java.util.List;
+
+public class UnixPrincipalHashCode {
+ public static void main(java.lang.String[] args) throws Exception {
+ Files.write(Path.of("uphc.conf"), List.of(
+ "entry {",
+ " com.sun.security.auth.module.UnixLoginModule required;",
+ "};"));
+ LoginContext lc = new LoginContext("entry");
+ lc.login();
+ Subject subject = lc.getSubject();
+ PrivilegedAction action = () -> {
+ System.out.println(subject);
+ return null;
+ };
+ Subject.doAsPrivileged(subject, action, null);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/security/auth/uphc.policy Mon Jul 09 12:20:56 2018 +0800
@@ -0,0 +1,6 @@
+grant {
+ permission java.io.FilePermission "./-", "write";
+ permission javax.security.auth.AuthPermission "modifyPrincipals";
+ permission javax.security.auth.AuthPermission "createLoginContext";
+ permission javax.security.auth.AuthPermission "doAsPrivileged";
+};