Serial.java revision 0
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts/*
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * This code is free software; you can redistribute it and/or modify it
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * under the terms of the GNU General Public License version 2 only, as
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * published by the Free Software Foundation.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * This code is distributed in the hope that it will be useful, but WITHOUT
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * version 2 for more details (a copy is included in the LICENSE file that
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * accompanied this code).
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * You should have received a copy of the GNU General Public License version
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * 2 along with this work; if not, write to the Free Software Foundation,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * CA 95054 USA or visit www.sun.com if you need additional information or
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * have any questions.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster/*
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @test
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @bug 4364855
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts * @summary PrivateCredentialPermission serialized set has
b3b3b7da0bb140cb1fe4613cc2e322683dc034d5James Phillpotts * implementation-dependent class
b3b3b7da0bb140cb1fe4613cc2e322683dc034d5James Phillpotts * @run main/othervm/policy=Serial.policy Serial
cc87cf22700a4a41bf0eba0d9579db53e7cedd94James Phillpotts */
997d6667b8c483bf582a231b1b24f84fbe6c8390Neil Madden
997d6667b8c483bf582a231b1b24f84fbe6c8390Neil Maddenimport javax.security.auth.*;
997d6667b8c483bf582a231b1b24f84fbe6c8390Neil Maddenimport java.io.*;
d0da70ccbba38b773e7a7cc71bc124b06206d201Robert Wapshottimport java.util.*;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterpublic class Serial implements java.io.Serializable {
d0da70ccbba38b773e7a7cc71bc124b06206d201Robert Wapshott
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static void main(String[] args) {
997d6667b8c483bf582a231b1b24f84fbe6c8390Neil Madden
997d6667b8c483bf582a231b1b24f84fbe6c8390Neil Madden try {
997d6667b8c483bf582a231b1b24f84fbe6c8390Neil Madden FileOutputStream fos = new FileOutputStream("serial.tmp");
997d6667b8c483bf582a231b1b24f84fbe6c8390Neil Madden ObjectOutputStream oos = new ObjectOutputStream(fos);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
d0da70ccbba38b773e7a7cc71bc124b06206d201Robert Wapshott PrivateCredentialPermission pcp = new PrivateCredentialPermission
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ("cred1 pc1 \"pn1\" pc2 \"pn2\"", "read");
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster oos.writeObject(pcp);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster oos.flush();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster fos.close();
d0da70ccbba38b773e7a7cc71bc124b06206d201Robert Wapshott
d0da70ccbba38b773e7a7cc71bc124b06206d201Robert Wapshott FileInputStream fis = new FileInputStream("serial.tmp");
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ObjectInputStream ois = new ObjectInputStream(fis);
d0da70ccbba38b773e7a7cc71bc124b06206d201Robert Wapshott
d0da70ccbba38b773e7a7cc71bc124b06206d201Robert Wapshott PrivateCredentialPermission pcp2 =
997d6667b8c483bf582a231b1b24f84fbe6c8390Neil Madden (PrivateCredentialPermission)ois.readObject();
d0da70ccbba38b773e7a7cc71bc124b06206d201Robert Wapshott fis.close();
d0da70ccbba38b773e7a7cc71bc124b06206d201Robert Wapshott
997d6667b8c483bf582a231b1b24f84fbe6c8390Neil Madden System.out.println("pcp2 = " + pcp2.toString());
997d6667b8c483bf582a231b1b24f84fbe6c8390Neil Madden System.out.println("pcp2.getPrincipals().length = " +
997d6667b8c483bf582a231b1b24f84fbe6c8390Neil Madden pcp2.getPrincipals().length);
997d6667b8c483bf582a231b1b24f84fbe6c8390Neil Madden if (!pcp.equals(pcp2) || !pcp2.equals(pcp)) {
997d6667b8c483bf582a231b1b24f84fbe6c8390Neil Madden throw new SecurityException("Serial test failed: " +
997d6667b8c483bf582a231b1b24f84fbe6c8390Neil Madden "EQUALS TEST FAILED");
997d6667b8c483bf582a231b1b24f84fbe6c8390Neil Madden }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
d0da70ccbba38b773e7a7cc71bc124b06206d201Robert Wapshott System.out.println("Serial test succeeded");
d0da70ccbba38b773e7a7cc71bc124b06206d201Robert Wapshott } catch (Exception e) {
d0da70ccbba38b773e7a7cc71bc124b06206d201Robert Wapshott e.printStackTrace();
d0da70ccbba38b773e7a7cc71bc124b06206d201Robert Wapshott throw new SecurityException("Serial test failed");
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
d0da70ccbba38b773e7a7cc71bc124b06206d201Robert Wapshott}
d0da70ccbba38b773e7a7cc71bc124b06206d201Robert Wapshott