Index: modules/security/test/common/unit/javax/security/auth/SubjectDomainCombinerTest.java =================================================================== --- modules/security/test/common/unit/javax/security/auth/SubjectDomainCombinerTest.java (revision 387791) +++ modules/security/test/common/unit/javax/security/auth/SubjectDomainCombinerTest.java (working copy) @@ -56,15 +56,14 @@ assertTrue("Subject is not null", subject == combiner.getSubject()); + } + + public final void testSubjectDomainCombinerNPE() { try { - combiner = new SubjectDomainCombiner(null); + new SubjectDomainCombiner(null); + fail("Constructor should throw NullPointerException"); } catch (NullPointerException e) { - if(!testing){ - throw e; - } - return; } - assertNull("Subject is null", combiner.getSubject()); } /** @@ -122,38 +121,6 @@ assertTrue("Inherited domain", domain == pd[0]); } - public final void testCombine_NullSubject() throws Exception { - - if(testing){ - return; - } - - SubjectDomainCombiner combiner = new SubjectDomainCombiner(null); - - // check assigned principals - URL url = new URL("file://foo.txt"); - - CodeSource source = new CodeSource(url, (Certificate[]) null); - PermissionCollection permissions = new Permissions(); - ClassLoader classLoader = new URLClassLoader(new URL[] { url }); - - Principal p = new Principal() { - public String getName() { - return "p"; - } - }; - Principal[] principals = new Principal[] { p }; - - ProtectionDomain domain = new ProtectionDomain(source, permissions, - classLoader, principals); - - ProtectionDomain[] pd = combiner.combine( - new ProtectionDomain[] { domain }, null); - - assertTrue("Size", pd[0].getPrincipals().length==0); - - } - public final void testSecurityException() { denyPermission(new AuthPermission("getSubjectFromDomainCombiner")); Index: modules/security/src/common/javasrc/javax/security/auth/SubjectDomainCombiner.java =================================================================== --- modules/security/src/common/javasrc/javax/security/auth/SubjectDomainCombiner.java (revision 387791) +++ modules/security/src/common/javasrc/javax/security/auth/SubjectDomainCombiner.java (working copy) @@ -44,6 +44,8 @@ * @com.intel.drl.spec_ref */ public SubjectDomainCombiner(Subject subject) { + if (subject == null) + throw new NullPointerException(); this.subject = subject; } @@ -84,16 +86,10 @@ int cur = 0; if (currentDomains != null) { - Principal[] p; - if (subject == null) { - p = new Principal[0]; - } else { - Set s = subject.getPrincipals(); + Set s = subject.getPrincipals(); + Principal[] p = new Principal[s.size()]; + s.toArray(p); - p = new Principal[s.size()]; - s.toArray(p); - } - for (cur = 0; cur < currentDomains.length; cur++) { ProtectionDomain newPD; newPD = new ProtectionDomain(currentDomains[cur]