# HG changeset patch # User weijun # Date 1531110056 -28800 # Node ID 3982b9671e71832f1ce915583333308ee6f30b73 # Parent 0083d474b0e1f2da4730d61290f345d3c809e478 8198352: java.util.MissingResourceException: sun.security.util.AuthResources when trying to use com.sun.security.auth.module.UnixLoginModule Reviewed-by: xuelei diff -r 0083d474b0e1 -r 3982b9671e71 src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericGroupPrincipal.java --- 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()); } } diff -r 0083d474b0e1 -r 3982b9671e71 test/jdk/com/sun/security/auth/UnixPrincipalHashCode.java --- /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); + } +} diff -r 0083d474b0e1 -r 3982b9671e71 test/jdk/com/sun/security/auth/uphc.policy --- /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"; +};