Java bug fix; from kurt@

This commit is contained in:
naddy 2009-03-01 20:43:08 +00:00
parent da4425e37b
commit 6ee377f042
7 changed files with 290 additions and 16 deletions

14
INDEX
View File

@ -806,12 +806,12 @@ itcl-3.3p1|devel/itcl||object-oriented extensions to Tcl|devel/itcl/pkg/DESCR|Ni
ivy-1.4.1p1|devel/ivy||dependency manager for Java|devel/ivy/pkg/DESCR|Matthias Kilian <kili@openbsd.org>|devel java||unzip-*:archivers/unzip|:java/javaPathHelper jdk->=1.5.0.*|jre->=1.5.0.*|kaffe-*|jamvm-*:devel/jdk/1.5|i386 amd64|y|y|y|y
jakarta-servletapi-3.2.4p6|devel/jakarta-servletapi||implementation of the JSP and Java Servlet APIs|devel/jakarta-servletapi/pkg/DESCR|Reinhard J. Sammer <reinhard@openbsd.org>|www devel||unzip-*:archivers/unzip|jdk->=1.5.0.*|kaffe-*:devel/jdk/1.5|i386 amd64|y|y|y|y
jam-2.5p1|devel/jam||build utility like make|devel/jam/pkg/DESCR|Jonathan Auer <jda@auerfamily.org>|devel||||any|y|y|y|y
jdk-1.5.0.14p2|devel/jdk/1.5,-main||Java2(TM) Standard Edition Dev Kit v1.5.0.14|devel/jdk/1.5/pkg/DESCR-main|Kurt Miller <kurt@openbsd.org>|devel/jdk java|Xm.>=2::x11/openmotif iconv.>=2::converters/libiconv|:archivers/bzip2 :archivers/gtar :archivers/unzip :archivers/zip :devel/gmake :devel/nspr :lang/jikes bzip2-*:archivers/bzip2 kaffe->=1.1.7p1:lang/kaffe|libiconv-*:converters/libiconv|amd64 i386|n|n|n|n
jre-1.5.0.14p2|devel/jdk/1.5,-jre||Java2(TM) Standard Edition Runtime Environment v1.5.0.14|devel/jdk/1.5/pkg/DESCR-jre|Kurt Miller <kurt@openbsd.org>|devel/jdk java|Xm.>=2::x11/openmotif iconv.>=2::converters/libiconv|:archivers/bzip2 :archivers/gtar :archivers/unzip :archivers/zip :devel/gmake :devel/nspr :lang/jikes bzip2-*:archivers/bzip2 kaffe->=1.1.7p1:lang/kaffe|libiconv-*:converters/libiconv|amd64 i386|n|n|n|n
jdk-1.6.0.03p5|devel/jdk/1.6,-main||Java2(TM) Standard Edition Dev Kit v1.6.0.03|devel/jdk/1.6/pkg/DESCR-main|Kurt Miller <kurt@openbsd.org>|devel/jdk java|iconv.>=2::converters/libiconv|:archivers/bzip2 :archivers/gtar :archivers/unzip :archivers/zip :devel/gmake :print/cups :x11/openmotif bzip2-*:archivers/bzip2 jdk-1.5*:devel/jdk/1.5|libiconv-*:converters/libiconv|amd64 i386|n|n|n|n
jre-1.6.0.03p5|devel/jdk/1.6,-jre||Java2(TM) Standard Edition Runtime Environment v1.6.0.03|devel/jdk/1.6/pkg/DESCR-jre|Kurt Miller <kurt@openbsd.org>|devel/jdk java|iconv.>=2::converters/libiconv|:archivers/bzip2 :archivers/gtar :archivers/unzip :archivers/zip :devel/gmake :print/cups :x11/openmotif bzip2-*:archivers/bzip2 jdk-1.5*:devel/jdk/1.5|libiconv-*:converters/libiconv|amd64 i386|n|n|n|n
jdk-1.7.0.00b43|devel/jdk/1.7,-main||Java2(TM) SE Dev Kit v1.7.0.00 Early Access b43|devel/jdk/1.7/pkg/DESCR-main|Kurt Miller <kurt@openbsd.org>|devel/jdk java|iconv.>=2::converters/libiconv|:archivers/unzip :archivers/zip :devel/apache-ant :devel/gmake :print/cups jdk-1.6.0.*:devel/jdk/1.6 unzip-*:archivers/unzip|libiconv-*:converters/libiconv|i386 amd64|y|y|y|y
jre-1.7.0.00b43|devel/jdk/1.7,-jre||Java2(TM) SE Runtime Environment v1.7.0.00 Early Access b43|devel/jdk/1.7/pkg/DESCR-jre|Kurt Miller <kurt@openbsd.org>|devel/jdk java|iconv.>=2::converters/libiconv|:archivers/unzip :archivers/zip :devel/apache-ant :devel/gmake :print/cups jdk-1.6.0.*:devel/jdk/1.6 unzip-*:archivers/unzip|libiconv-*:converters/libiconv|i386 amd64|y|y|y|y
jdk-1.5.0.14p3|devel/jdk/1.5,-main||Java2(TM) Standard Edition Dev Kit v1.5.0.14|devel/jdk/1.5/pkg/DESCR-main|Kurt Miller <kurt@openbsd.org>|devel/jdk java|Xm.>=2::x11/openmotif iconv.>=2::converters/libiconv|:archivers/bzip2 :archivers/gtar :archivers/unzip :archivers/zip :devel/gmake :devel/nspr :lang/jikes bzip2-*:archivers/bzip2 kaffe->=1.1.7p1:lang/kaffe|libiconv-*:converters/libiconv|amd64 i386|n|n|n|n
jre-1.5.0.14p3|devel/jdk/1.5,-jre||Java2(TM) Standard Edition Runtime Environment v1.5.0.14|devel/jdk/1.5/pkg/DESCR-jre|Kurt Miller <kurt@openbsd.org>|devel/jdk java|Xm.>=2::x11/openmotif iconv.>=2::converters/libiconv|:archivers/bzip2 :archivers/gtar :archivers/unzip :archivers/zip :devel/gmake :devel/nspr :lang/jikes bzip2-*:archivers/bzip2 kaffe->=1.1.7p1:lang/kaffe|libiconv-*:converters/libiconv|amd64 i386|n|n|n|n
jdk-1.6.0.03p6|devel/jdk/1.6,-main||Java2(TM) Standard Edition Dev Kit v1.6.0.03|devel/jdk/1.6/pkg/DESCR-main|Kurt Miller <kurt@openbsd.org>|devel/jdk java|iconv.>=2::converters/libiconv|:archivers/bzip2 :archivers/gtar :archivers/unzip :archivers/zip :devel/gmake :print/cups :x11/openmotif bzip2-*:archivers/bzip2 jdk-1.5*:devel/jdk/1.5|libiconv-*:converters/libiconv|amd64 i386|n|n|n|n
jre-1.6.0.03p6|devel/jdk/1.6,-jre||Java2(TM) Standard Edition Runtime Environment v1.6.0.03|devel/jdk/1.6/pkg/DESCR-jre|Kurt Miller <kurt@openbsd.org>|devel/jdk java|iconv.>=2::converters/libiconv|:archivers/bzip2 :archivers/gtar :archivers/unzip :archivers/zip :devel/gmake :print/cups :x11/openmotif bzip2-*:archivers/bzip2 jdk-1.5*:devel/jdk/1.5|libiconv-*:converters/libiconv|amd64 i386|n|n|n|n
jdk-1.7.0.00b43p0|devel/jdk/1.7,-main||Java2(TM) SE Dev Kit v1.7.0.00 Early Access b43|devel/jdk/1.7/pkg/DESCR-main|Kurt Miller <kurt@openbsd.org>|devel/jdk java|iconv.>=2::converters/libiconv|:archivers/unzip :archivers/zip :devel/apache-ant :devel/gmake :print/cups jdk-1.6.0.*:devel/jdk/1.6 unzip-*:archivers/unzip|libiconv-*:converters/libiconv|i386 amd64|y|y|y|y
jre-1.7.0.00b43p0|devel/jdk/1.7,-jre||Java2(TM) SE Runtime Environment v1.7.0.00 Early Access b43|devel/jdk/1.7/pkg/DESCR-jre|Kurt Miller <kurt@openbsd.org>|devel/jdk java|iconv.>=2::converters/libiconv|:archivers/unzip :archivers/zip :devel/apache-ant :devel/gmake :print/cups jdk-1.6.0.*:devel/jdk/1.6 unzip-*:archivers/unzip|libiconv-*:converters/libiconv|i386 amd64|y|y|y|y
json-c-0.7|devel/json-c||JSON implementation in C|devel/json-c/pkg/DESCR|Marc Balmer <mbalmer@openbsd.org>|devel||:devel/libtool||any|y|y|y|y
json-glib-0.6.2|devel/json-glib||JSON parser for GLib-based libraries and applications|devel/json-glib/pkg/DESCR|The OpenBSD ports mailing-list <ports@openbsd.org>|devel|glib-2.0,gobject-2.0::devel/glib2 iconv.>=4::converters/libiconv intl.>=4:gettext->=0.10.38:devel/gettext|:devel/gmake :devel/libtool gettext->=0.17:devel/gettext|gettext->=0.10.38:devel/gettext|any|y|y|y|y
kdbg-1.2.5p2|devel/kdbg||graphical debugger for KDE|devel/kdbg/pkg/DESCR|The OpenBSD ports mailing-list <ports@openbsd.org>|devel|iconv.>=4::converters/libiconv intl.>=4:gettext->=0.10.38:devel/gettext kdecore.>=4,DCOP,kdefx,kdesu,kdeui,kio,kwalletclient::x11/kde/libs3 lib/qt3/qt-mt.>=3::x11/qt3|:devel/libtool :devel/metaauto autoconf-2.13:devel/autoconf/2.13 gettext->=0.17:devel/gettext|gettext->=0.10.38:devel/gettext|any|y|y|y|y
@ -2839,7 +2839,7 @@ subrip-0.10.0p0|multimedia/subrip||extract subtitles from dvds|multimedia/subrip
subtitleripper-0.3.4|multimedia/subtitleripper||subtitle ripper, used with transcode|multimedia/subtitleripper/pkg/DESCR|Jeremy Evans <openbsd@jeremyevans.net>|multimedia|netpbm.>=1::graphics/netpbm png.>=5::graphics/png|:devel/gmake|:multimedia/transcode|any|y|y|y|y
transcode-1.0.5p0|multimedia/transcode||video stream processing tools|multimedia/transcode/pkg/DESCR|The OpenBSD ports mailing-list <ports@openbsd.org>|multimedia|SDL.>=2::devel/sdl a52::audio/liba52 avcodec.>=10,avutil.>=4::graphics/ffmpeg dv.>=4::multimedia/libdv dvdread.>=3::devel/libdvdread iconv.>=4::converters/libiconv jpeg.>=62::graphics/jpeg mp3lame::audio/lame mpeg2,mpeg2convert::graphics/libmpeg2 ogg.>=5::audio/libogg postproc.>=6::graphics/ffmpeg theora.>=1::multimedia/libtheora vorbis.>=3,vorbisenc.>=2,vorbisfile.>=4::audio/libvorbis xml2.>=8::textproc/libxml|:devel/libtool bzip2-*:archivers/bzip2|:audio/sox :audio/toolame :audio/vorbis-tools :graphics/ffmpeg :multimedia/xvidcore :x11/mplayer|any|y|y|y|y
x264-20080713p2|multimedia/x264||free H264/AVC encoder|multimedia/x264/pkg/DESCR|The OpenBSD ports mailing-list <ports@openbsd.org>|multimedia||:devel/gmake :devel/yasm bzip2-*:archivers/bzip2||any|y|y|y|y
xine-lib-1.1.16.2p0|multimedia/xine-lib||multimedia decoding library|multimedia/xine-lib/pkg/DESCR|Brad Smith <brad@comstyle.com>|multimedia|FLAC.>=5::audio/flac SDL.>=3::devel/sdl a52::audio/liba52 avcodec.>=7,avutil.>=6,postproc.>=7::graphics/ffmpeg dvdnav.>=5::multimedia/libdvdnav faad.>=2::audio/faad iconv.>=4::converters/libiconv intl.>=4:gettext->=0.10.38:devel/gettext mad.>=2::audio/libmad mng.>=3::graphics/libmng ogg.>=5::audio/libogg speex.>=3::audio/speex theora.>=1::multimedia/libtheora vorbis.>=4::audio/libvorbis wavpack::audio/wavpack|:devel/gmake :devel/libtool :devel/metaauto autoconf-2.61:devel/autoconf/2.61 bzip2-*:archivers/bzip2 gettext->=0.17:devel/gettext|gettext->=0.10.38:devel/gettext|any|y|y|y|y
xine-lib-1.1.16.2p1|multimedia/xine-lib||multimedia decoding library|multimedia/xine-lib/pkg/DESCR|Brad Smith <brad@comstyle.com>|multimedia|FLAC.>=5::audio/flac SDL.>=3::devel/sdl a52::audio/liba52 avcodec.>=7,avutil.>=6,postproc.>=7::graphics/ffmpeg dvdnav.>=5::multimedia/libdvdnav faad.>=2::audio/faad iconv.>=4::converters/libiconv intl.>=4:gettext->=0.10.38:devel/gettext mad.>=2::audio/libmad mng.>=3::graphics/libmng ogg.>=5::audio/libogg speex.>=3::audio/speex theora.>=1::multimedia/libtheora vorbis.>=4::audio/libvorbis wavpack::audio/wavpack|:devel/gmake :devel/libtool :devel/metaauto autoconf-2.61:devel/autoconf/2.61 bzip2-*:archivers/bzip2 gettext->=0.17:devel/gettext|gettext->=0.10.38:devel/gettext|any|y|y|y|y
xine-ui-0.99.5p1|multimedia/xine-ui||multimedia player|multimedia/xine-ui/pkg/DESCR|The OpenBSD ports mailing-list <ports@openbsd.org>|multimedia|curl.>=2::net/curl iconv.>=4::converters/libiconv intl.>=4:gettext->=0.10.38:devel/gettext png.>=4::graphics/png xine.>=14::multimedia/xine-lib|:devel/libtool gettext->=0.17:devel/gettext|desktop-file-utils-*:devel/desktop-file-utils gettext->=0.10.38:devel/gettext|any|y|y|y|y
xvidcore-1.1.3|multimedia/xvidcore||ISO MPEG-4 compliant video codec|multimedia/xvidcore/pkg/DESCR|The OpenBSD ports mailing-list <ports@openbsd.org>|multimedia||yasm-*:devel/yasm||any|y|y|y|y
BitTorrent-4.4.0p4|net/BitTorrent,-main||cooperative file distribution system implemented in Python|net/BitTorrent/pkg/DESCR-main|The OpenBSD ports mailing-list <ports@openbsd.org>|net lang/python||:devel/gettext python-2.5*:lang/python/2.5|python-2.5*:lang/python/2.5|any|n|y|n|y

View File

@ -1,4 +1,4 @@
# $OpenBSD: Makefile,v 1.54 2008/12/21 03:59:44 kurt Exp $
# $OpenBSD: Makefile,v 1.55 2009/03/01 20:43:09 naddy Exp $
SHARED_ONLY= Yes
ONLY_FOR_ARCHS= amd64 i386
@ -7,8 +7,8 @@ COMMENT-main= Java2(TM) Standard Edition Dev Kit v${V}
COMMENT-jre= Java2(TM) Standard Edition Runtime Environment v${V}
V= 1.5.0.14
PKGNAME= jdk-${V}
PKGNAME-main= jdk-${V}p2
PKGNAME-jre= jre-${V}p2
PKGNAME-main= jdk-${V}p3
PKGNAME-jre= jre-${V}p3
CATEGORIES= devel/jdk java

View File

@ -0,0 +1,91 @@
$OpenBSD: patch-j2se_src_share_classes_java_util_Calendar_java,v 1.1 2009/03/01 20:43:09 naddy Exp $
--- j2se/src/share/classes/java/util/Calendar.java.orig Fri Oct 5 03:18:28 2007
+++ j2se/src/share/classes/java/util/Calendar.java Sat Feb 28 09:34:02 2009
@@ -23,9 +23,14 @@ package java.util;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import java.io.OptionalDataException;
import java.io.Serializable;
+import java.security.AccessControlContext;
import java.security.AccessController;
+import java.security.PermissionCollection;
+import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
+import java.security.ProtectionDomain;
import java.text.DateFormat;
import sun.text.resources.LocaleData;
import sun.util.BuddhistCalendar;
@@ -2396,6 +2401,18 @@ public abstract class Calendar implements Serializable
}
}
+ private static class CalendarAccessControlContext {
+ private static final AccessControlContext INSTANCE;
+ static {
+ RuntimePermission perm = new RuntimePermission("accessClassInPackage.sun.util.calendar");
+ PermissionCollection perms = perm.newPermissionCollection();
+ perms.add(perm);
+ INSTANCE = new AccessControlContext(new ProtectionDomain[] {
+ new ProtectionDomain(null, perms)
+ });
+ }
+ }
+
/**
* Reconstitutes this object from a stream (i.e., deserialize it).
*/
@@ -2425,17 +2442,30 @@ public abstract class Calendar implements Serializable
serialVersionOnStream = currentSerialVersion;
// If there's a ZoneInfo object, use it for zone.
+ ZoneInfo zi = null;
try {
- ZoneInfo zi = (ZoneInfo) AccessController.doPrivileged(
- new PrivilegedExceptionAction() {
- public Object run() throws Exception {
- return input.readObject();
- }
- });
- if (zi != null) {
- zone = zi;
- }
- } catch (Exception e) {
+ zi = AccessController.doPrivileged(
+ new PrivilegedExceptionAction<ZoneInfo>() {
+ public ZoneInfo run() throws Exception {
+ return (ZoneInfo) input.readObject();
+ }
+ },
+ CalendarAccessControlContext.INSTANCE);
+ } catch (PrivilegedActionException pae) {
+ Exception e = pae.getException();
+ if (!(e instanceof OptionalDataException)) {
+ if (e instanceof RuntimeException) {
+ throw (RuntimeException) e;
+ } else if (e instanceof IOException) {
+ throw (IOException) e;
+ } else if (e instanceof ClassNotFoundException) {
+ throw (ClassNotFoundException) e;
+ }
+ throw new RuntimeException(e);
+ }
+ }
+ if (zi != null) {
+ zone = zi;
}
// If the deserialized object has a SimpleTimeZone, try to
@@ -2444,9 +2474,9 @@ public abstract class Calendar implements Serializable
// implementation as much as possible.
if (zone instanceof SimpleTimeZone) {
String id = zone.getID();
- TimeZone zi = TimeZone.getTimeZone(id);
- if (zi != null && zi.hasSameRules(zone) && zi.getID().equals(id)) {
- zone = zi;
+ TimeZone tz = TimeZone.getTimeZone(id);
+ if (tz != null && tz.hasSameRules(zone) && tz.getID().equals(id)) {
+ zone = tz;
}
}
}

View File

@ -1,4 +1,4 @@
# $OpenBSD: Makefile,v 1.10 2009/01/07 13:34:21 kurt Exp $
# $OpenBSD: Makefile,v 1.11 2009/03/01 20:43:09 naddy Exp $
SHARED_ONLY= Yes
ONLY_FOR_ARCHS= amd64 i386
@ -7,8 +7,8 @@ COMMENT-main= Java2(TM) Standard Edition Dev Kit v${V}
COMMENT-jre= Java2(TM) Standard Edition Runtime Environment v${V}
V= 1.6.0.03
PKGNAME= jdk-${V}
PKGNAME-main= jdk-${V}p5
PKGNAME-jre= jre-${V}p5
PKGNAME-main= jdk-${V}p6
PKGNAME-jre= jre-${V}p6
CATEGORIES= devel/jdk java

View File

@ -0,0 +1,92 @@
$OpenBSD: patch-j2se_src_share_classes_java_util_Calendar_java,v 1.1 2009/03/01 20:43:09 naddy Exp $
--- j2se/src/share/classes/java/util/Calendar.java.orig Tue Sep 25 00:44:04 2007
+++ j2se/src/share/classes/java/util/Calendar.java Sat Feb 28 09:35:28 2009
@@ -23,9 +23,14 @@ package java.util;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import java.io.OptionalDataException;
import java.io.Serializable;
+import java.security.AccessControlContext;
import java.security.AccessController;
+import java.security.PermissionCollection;
+import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
+import java.security.ProtectionDomain;
import java.text.DateFormat;
import java.text.DateFormatSymbols;
import sun.util.BuddhistCalendar;
@@ -2599,6 +2604,18 @@ public abstract class Calendar implements Serializable
}
}
+ private static class CalendarAccessControlContext {
+ private static final AccessControlContext INSTANCE;
+ static {
+ RuntimePermission perm = new RuntimePermission("accessClassInPackage.sun.util.calendar");
+ PermissionCollection perms = perm.newPermissionCollection();
+ perms.add(perm);
+ INSTANCE = new AccessControlContext(new ProtectionDomain[] {
+ new ProtectionDomain(null, perms)
+ });
+ }
+ }
+
/**
* Reconstitutes this object from a stream (i.e., deserialize it).
*/
@@ -2628,18 +2645,31 @@ public abstract class Calendar implements Serializable
serialVersionOnStream = currentSerialVersion;
// If there's a ZoneInfo object, use it for zone.
+ ZoneInfo zi = null;
try {
- ZoneInfo zi = (ZoneInfo) AccessController.doPrivileged(
- new PrivilegedExceptionAction() {
- public Object run() throws Exception {
- return input.readObject();
- }
- });
- if (zi != null) {
- zone = zi;
- }
- } catch (Exception e) {
+ zi = AccessController.doPrivileged(
+ new PrivilegedExceptionAction<ZoneInfo>() {
+ public ZoneInfo run() throws Exception {
+ return (ZoneInfo) input.readObject();
+ }
+ },
+ CalendarAccessControlContext.INSTANCE);
+ } catch (PrivilegedActionException pae) {
+ Exception e = pae.getException();
+ if (!(e instanceof OptionalDataException)) {
+ if (e instanceof RuntimeException) {
+ throw (RuntimeException) e;
+ } else if (e instanceof IOException) {
+ throw (IOException) e;
+ } else if (e instanceof ClassNotFoundException) {
+ throw (ClassNotFoundException) e;
+ }
+ throw new RuntimeException(e);
+ }
}
+ if (zi != null) {
+ zone = zi;
+ }
// If the deserialized object has a SimpleTimeZone, try to
// replace it with a ZoneInfo equivalent (as of 1.4) in order
@@ -2647,9 +2677,9 @@ public abstract class Calendar implements Serializable
// implementation as much as possible.
if (zone instanceof SimpleTimeZone) {
String id = zone.getID();
- TimeZone zi = TimeZone.getTimeZone(id);
- if (zi != null && zi.hasSameRules(zone) && zi.getID().equals(id)) {
- zone = zi;
+ TimeZone tz = TimeZone.getTimeZone(id);
+ if (tz != null && tz.hasSameRules(zone) && tz.getID().equals(id)) {
+ zone = tz;
}
}
}

View File

@ -1,4 +1,4 @@
# $OpenBSD: Makefile,v 1.26 2009/01/17 11:37:42 kurt Exp $
# $OpenBSD: Makefile,v 1.27 2009/03/01 20:43:09 naddy Exp $
SHARED_ONLY= Yes
ONLY_FOR_ARCHS= i386 amd64
@ -10,8 +10,8 @@ B= b43
DISTFILES= openjdk-7-ea-src-${B}-15_jan_2009.zip \
jdk-7-icedtea-plugs-1.6a.tar.gz:0
PKGNAME= jdk-${V}
PKGNAME-main= jdk-${V}${B}
PKGNAME-jre= jre-${V}${B}
PKGNAME-main= jdk-${V}${B}p0
PKGNAME-jre= jre-${V}${B}p0
CATEGORIES= devel/jdk java

View File

@ -0,0 +1,91 @@
$OpenBSD: patch-jdk_src_share_classes_java_util_Calendar_java,v 1.1 2009/03/01 20:43:09 naddy Exp $
--- jdk/src/share/classes/java/util/Calendar.java.orig Thu Jan 15 03:44:20 2009
+++ jdk/src/share/classes/java/util/Calendar.java Sat Feb 28 09:09:09 2009
@@ -41,9 +41,14 @@ package java.util;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import java.io.OptionalDataException;
import java.io.Serializable;
+import java.security.AccessControlContext;
import java.security.AccessController;
+import java.security.PermissionCollection;
+import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
+import java.security.ProtectionDomain;
import java.text.DateFormat;
import java.text.DateFormatSymbols;
import sun.util.BuddhistCalendar;
@@ -2626,6 +2631,18 @@ public abstract class Calendar implements Serializable
}
}
+ private static class CalendarAccessControlContext {
+ private static final AccessControlContext INSTANCE;
+ static {
+ RuntimePermission perm = new RuntimePermission("accessClassInPackage.sun.util.calendar");
+ PermissionCollection perms = perm.newPermissionCollection();
+ perms.add(perm);
+ INSTANCE = new AccessControlContext(new ProtectionDomain[] {
+ new ProtectionDomain(null, perms)
+ });
+ }
+ }
+
/**
* Reconstitutes this object from a stream (i.e., deserialize it).
*/
@@ -2655,18 +2672,31 @@ public abstract class Calendar implements Serializable
serialVersionOnStream = currentSerialVersion;
// If there's a ZoneInfo object, use it for zone.
+ ZoneInfo zi = null;
try {
- ZoneInfo zi = (ZoneInfo) AccessController.doPrivileged(
- new PrivilegedExceptionAction() {
- public Object run() throws Exception {
- return input.readObject();
- }
- });
- if (zi != null) {
- zone = zi;
+ zi = AccessController.doPrivileged(
+ new PrivilegedExceptionAction<ZoneInfo>() {
+ public ZoneInfo run() throws Exception {
+ return (ZoneInfo) input.readObject();
+ }
+ },
+ CalendarAccessControlContext.INSTANCE);
+ } catch (PrivilegedActionException pae) {
+ Exception e = pae.getException();
+ if (!(e instanceof OptionalDataException)) {
+ if (e instanceof RuntimeException) {
+ throw (RuntimeException) e;
+ } else if (e instanceof IOException) {
+ throw (IOException) e;
+ } else if (e instanceof ClassNotFoundException) {
+ throw (ClassNotFoundException) e;
+ }
+ throw new RuntimeException(e);
}
- } catch (Exception e) {
}
+ if (zi != null) {
+ zone = zi;
+ }
// If the deserialized object has a SimpleTimeZone, try to
// replace it with a ZoneInfo equivalent (as of 1.4) in order
@@ -2674,9 +2704,9 @@ public abstract class Calendar implements Serializable
// implementation as much as possible.
if (zone instanceof SimpleTimeZone) {
String id = zone.getID();
- TimeZone zi = TimeZone.getTimeZone(id);
- if (zi != null && zi.hasSameRules(zone) && zi.getID().equals(id)) {
- zone = zi;
+ TimeZone tz = TimeZone.getTimeZone(id);
+ if (tz != null && tz.hasSameRules(zone) && tz.getID().equals(id)) {
+ zone = tz;
}
}
}