. Update to patchset 7.

. Fix a permissions problem with the plugins directory.

Approved by:	phantom (maintainer)
This commit is contained in:
Greg Lewis 2004-12-17 07:02:51 +00:00
parent 8291e657e8
commit 55f5e15a50
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=124268
75 changed files with 24 additions and 6054 deletions

View file

@ -7,7 +7,6 @@
PORTNAME= jdk
PORTVERSION= ${JDK_VERSION}p${JDK_PATCHSET_VERSION}
PORTREVISION= 7
CATEGORIES= java devel
MASTER_SITES= # http://www.sun.com/software/java2/download.html
# http://www.eyesbeyond.com/freebsddom/java/jdk14.html
@ -32,7 +31,7 @@ RUN_DEPENDS+= ${X11BASE}/lib/X11/fonts/URW/fonts.dir:${PORTSDIR}/x11-fonts/urwfo
WRKSRC= ${WRKDIR}/control/make
JDK_VERSION= 1.4.2
JDK_PATCHSET_VERSION= 6
JDK_PATCHSET_VERSION= 7
LATEST_LINK= jdk14
SUN_LINUX_JDK_VERSION= 1.4.2
@ -315,6 +314,9 @@ do-install:
.endif
post-install:
.if !defined(MINIMAL)
${FIND} "${PREFIX}/jdk${JDK_VERSION}/jre/plugin" -type d | ${XARGS} ${CHMOD} a+rx
.endif
@${LOCALBASE}/bin/registervm "${PREFIX}/jdk${JDK_VERSION}/bin/java # FREEBSD-JDK${JDK_VERSION}"
@${SED} -e "s:%%JRE_HOME%%:${PREFIX}/jdk${JDK_VERSION}/jre:g" \
< ${FILESDIR}/pkg-install.in > ${PKGINSTALL}

View file

@ -2,5 +2,5 @@ MD5 (j2sdk-1_4_2-src-scsl.zip) = 387ae674dcd686f3a7a477c191aa8b65
SIZE (j2sdk-1_4_2-src-scsl.zip) = 49269919
MD5 (j2sdk-1_4_2-bin-scsl.zip) = 24877ff50ae66744090c3723968bb7dc
SIZE (j2sdk-1_4_2-bin-scsl.zip) = 2513462
MD5 (bsd-jdk14-patches-6.tar.gz) = fe01a66ce4e8425f169c1b4a88d08f87
SIZE (bsd-jdk14-patches-6.tar.gz) = 1068798
MD5 (bsd-jdk14-patches-7.tar.gz) = fe76afc2dd8651350a2f0e221d928fa5
SIZE (bsd-jdk14-patches-7.tar.gz) = 1137785

View file

@ -1,13 +0,0 @@
$FreeBSD$
--- ../../j2se/src/solaris/native/sun/awt/awt_Component.c.orig 27 Oct 2003 12:16:41 -0000 1.4
+++ ../../j2se/src/solaris/native/sun/awt/awt_Component.c 1 Mar 2004 21:36:45 -0000 1.5
@@ -1179,7 +1179,7 @@
}
XtVaSetValues(to, XmNtraversalOn, True, NULL);
}
- } else if (from != NULL) {
+ } else if (from != NULL && to != NULL) {
// disable the tree starting from uncommon part to 'from'
if (parents_from[index] == parents_to[index]) {
if (index == count_from - 1) {

View file

@ -1,53 +0,0 @@
$FreeBSD$
--- ../../j2se/src/share/native/sun/awt/font/fontmanager/fontobjects/fontObject.cpp.orig Wed Jul 7 09:33:52 2004
+++ ../../j2se/src/share/native/sun/awt/font/fontmanager/fontobjects/fontObject.cpp Wed Jul 7 13:26:03 2004
@@ -416,7 +416,11 @@
fUseCount += 1;
if (length > 0 && fFileSize > 0) {
- assert(offset < fFileSize);
+ if (offset >= fFileSize) {
+ fUseCount--;
+ return NULL;
+ }
+
if ((offset + length) > fFileSize)
length = fFileSize - offset;
@@ -431,13 +435,14 @@
"fileFontObject::ReadChunk(UInt32,UInt32,void*)\n"
);
#endif
+ fUseCount--;
return NULL;
}
off_t err = lseek(fFile, offset, SEEK_SET);
#ifdef DEBUG
if (err == (off_t)-1) {
- fprintf(stderr, "seek(%d) returned %d\n", offset, (int) err);
+ fprintf(stderr, "seek(%ld) returned %d\n", offset, (int) err);
}
#endif
@@ -448,7 +453,7 @@
int tellvalue = lseek(fFile, 0, SEEK_END);
#ifdef DEBUG
fprintf(stderr,
- "<%s> of %d, ln %d, rd %d, sz %d, tell %d, err %d\n",
+ "<%s> of %ld, ln %ld, rd %d, sz %ld, tell %d, err %d\n",
(char *)fFileName, offset, length, (int)bytesRead,
fFileSize, tellvalue, (int) err);
#endif
@@ -1457,7 +1462,9 @@
return false;
}
- this->ReadChunk(sizeof theHeader, fFontCount * sizeof *offsets, offsets);
+ if (this->ReadChunk(sizeof theHeader, fFontCount * sizeof *offsets, offsets) == NULL) {
+ return false;
+ }
for (int i=0; i<fFontCount; i++) {
offsets[i] = GET32(offsets[i]);
}

View file

@ -1,21 +0,0 @@
$FreeBSD$
--- ../../j2se/src/share/native/sun/awt/font/fontmanager/fontobjects/t2kScalerContext.cpp.orig Fri Jul 30 18:00:09 2004
+++ ../../j2se/src/share/native/sun/awt/font/fontmanager/fontobjects/t2kScalerContext.cpp Fri Jul 30 22:11:36 2004
@@ -937,14 +937,14 @@
CMAPMapper::CharsToGlyphs(
int count, const Unicode16 unicodes[], UInt32 glyphs[]) const
{
- ConvertUnicodeToGlyphs(*font, (unsigned char *)cmap, count, unicodes, glyphs);
+ ConvertUnicodeToGlyphs(*font, (byte*&)cmap, count, unicodes, glyphs);
}
void
CMAPMapper::CharsToGlyphs(
int count, const Unicode32 unicodes[], UInt32 glyphs[]) const
{
- ConvertUnicodeToGlyphs(*font, (unsigned char *)cmap, count, unicodes, glyphs);
+ ConvertUnicodeToGlyphs(*font, (byte*&)cmap, count, unicodes, glyphs);
}
//////////////////////////////////////////////////////////////////////////////

View file

@ -1,46 +0,0 @@
$FreeBSD$
--- ../../deploy/make/Makefile.orig Tue Jan 27 18:54:56 2004
+++ ../../deploy/make/Makefile Tue Jan 27 18:58:08 2004
@@ -24,17 +24,29 @@
DEPLOY_TOPDIR=..
include $(BUILDDIR)/common/Defs.gmk
+ifdef NO_PLUGIN
+BUILD_PLUGIN= false
+else
+BUILD_PLUGIN= true
+endif
+
+ifdef NO_JAVAWS
+BUILD_JAVAWS= false
+else
+BUILD_JAVAWS= true
+endif
+
all::
@$(ECHO) "$(PLATFORM) $(ARCH) $(RELEASE) deploy build started: $(shell $(DATE) '+%y-%m-%d %H:%M')"
-BUILD_PLUGIN = true
-
#
# Core.
#
JAVAWS_SUBDIR = javaws
PLUGIN_SUBDIR = plugin
+ifeq ($(BUILD_JAVAWS), true)
SUBDIRS = $(JAVAWS_SUBDIR)
+endif
ifeq ($(BUILD_PLUGIN), true)
SUBDIR += $(PLUGIN_SUBDIR)
endif
@@ -47,7 +59,9 @@
done
javaws-all: sanity-javaws
+ ifeq ($(BUILD_JAVAWS), true)
$(CD) $(BUILDDIR)/javaws ; $(MAKE) installer-int dev-all doc aubundle
+ endif
plugin-all: sanity-plugin
ifeq ($(BUILD_PLUGIN), true)

View file

@ -1,302 +0,0 @@
$FreeBSD$
--- ../../j2se/src/solaris/classes/sun/awt/motif/font.properties.zh_TW.bsd.orig 16 Aug 2002 06:04:59 -0000 1.1
+++ ../../j2se/src/solaris/classes/sun/awt/motif/font.properties.zh_TW.bsd 1 Mar 2004 21:40:08 -0000 1.2
@@ -1,235 +1,178 @@
+# %W% %E%
#
-# @(#)font.properties.zh 1.0 00/06/20
-#
-# Copyright 2000 by Sun Microsystems, Inc.,
-# 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
-# All rights reserved.
-#
-# This software is the confidential and proprietary information
-# of Sun Microsystems, Inc. ("Confidential Information"). You
-# shall not disclose such Confidential Information and shall use
-# it only in accordance with the terms of the license agreement
-# you entered into with Sun.
-#
-
-#
-# AWT Font default Properties for Simplified Chinese TurboLinux 6.0 and higher
+# Copyright 2002 Sun Microsystems, Inc. All rights reserved.
#
-# Serif font definition
+# Component Font Mappings For RedhatLinux 8.0/zh_TW
#
serif.0=-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1
-serif.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+serif.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.italic.0=-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1
-serif.italic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+serif.italic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.bold.0=-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1
-serif.bold.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+serif.bold.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.bolditalic.0=-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1
-serif.bolditalic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+serif.bolditalic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-# SansSerif font definition
-#
sansserif.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
-sansserif.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+sansserif.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
-sansserif.italic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+sansserif.italic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
-sansserif.bold.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+sansserif.bold.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
-sansserif.bolditalic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+sansserif.bolditalic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-# Monospaced font definition
-#
monospaced.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-monospaced.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+monospaced.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-monospaced.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-monospaced.italic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+monospaced.italic.0=-b&h-lucidatypewriter-medium-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+monospaced.italic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-monospaced.bold.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+monospaced.bold.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-monospaced.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-monospaced.bolditalic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+monospaced.bolditalic.0=-b&h-lucidatypewriter-bold-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+monospaced.bolditalic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-# Dialog font definition
-#
dialog.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
-dialog.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialog.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
-dialog.italic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialog.italic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
-dialog.bold.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialog.bold.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
-dialog.bolditalic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialog.bolditalic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-# DialogInput font definition
-#
dialoginput.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-dialoginput.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialoginput.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-dialoginput.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-dialoginput.italic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialoginput.italic.0=-b&h-lucidatypewriter-medium-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+dialoginput.italic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-dialoginput.bold.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
-
-dialoginput.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-dialoginput.bolditalic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialoginput.bold.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+dialoginput.bolditalic.0=-b&h-lucidatypewriter-bold-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+dialoginput.bolditalic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-# Default font definition
+# Missing Glyph Character
#
default.char=274f
-# name aliases
-#
-# alias.timesroman=serif
-# alias.helvetica=sansserif
-# alias.courier=monospaced
-
-# for backward compatibility
-#
-#zapfdingbats.0=-monotype-monotype sorts-regular-r---*-%d-*-*-p-*-adobe-dingbats
-
-# Static FontCharset info.
-#
-# This information is used by the font which is not indexed by Unicode.
-# Such fonts can use their own subclass of FontCharset.
-#
-# This information can be overriden by describing more specific style.
-# For example
-#
-# fontcharset.serif.plain.3=SpecialSymbols
-# means serif.plain.3 font's index can be retrieved with the convert() method
-# of instance of SpecialSymbols and what kind of characters serif.plain.3 font
-# has can be judged with the isCovered() method of instance of SpecialSymbols.
+# Component Font Character Encodings
#
fontcharset.serif.0=sun.io.CharToByteISO8859_1
-fontcharset.serif.1=sun.io.CharToByteMS950
+fontcharset.serif.1=sun.io.CharToByteUnicodeBigUnmarked
fontcharset.sansserif.0=sun.io.CharToByteISO8859_1
-fontcharset.sansserif.1=sun.io.CharToByteMS950
+fontcharset.sansserif.1=sun.io.CharToByteUnicodeBigUnmarked
fontcharset.monospaced.0=sun.io.CharToByteISO8859_1
-fontcharset.monospaced.1=sun.io.CharToByteMS950
+fontcharset.monospaced.1=sun.io.CharToByteUnicodeBigUnmarked
fontcharset.dialog.0=sun.io.CharToByteISO8859_1
-fontcharset.dialog.1=sun.io.CharToByteMS950
+fontcharset.dialog.1=sun.io.CharToByteUnicodeBigUnmarked
fontcharset.dialoginput.0=sun.io.CharToByteISO8859_1
-fontcharset.dialoginput.1=sun.io.CharToByteMS950
+fontcharset.dialoginput.1=sun.io.CharToByteUnicodeBigUnmarked
-# exclusion info.
-#
-# This information describe exclusion ranges for each fonts.
-#
-# 'exclusion.serif.plain.0' overrides 'exclusion.serif.0', and
-# 'exclusion.serif.0' overrides exclusion.0, and so on.
+# Exclusion Ranges
#
-# XFontSet string
-# X11 only properties
+# XFontSet Information
#
fontset.serif.plain=\
-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.serif.italic=\
-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.serif.bold=\
-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.serif.bolditalic=\
-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
-
-# SansSerif font definition
-#
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.sansserif.plain=\
-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.sansserif.italic=\
-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.sansserif.bold=\
--b&h-lucida-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-b&h-lucida-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.sansserif.bolditalic=\
--b&h-lucida-bold-i-normal-snas-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-b&h-lucida-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
-# Monospaced font definition
-#
fontset.monospaced.plain=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.monospaced.italic=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.monospaced.bold=\
--b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-,1\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.monospaced.bolditalic=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
-# Dialog font definition
-#
fontset.dialog.italic=\
-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialog.bold=\
-b&h-lucida-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialog.bolditalic=\
-b&h-lucida-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialog.plain=\
-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
-# DialogInput font definition
-#
fontset.dialoginput.italic=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialoginput.bold=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialoginput.bolditalic=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialoginput.plain=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
-#
fontset.default=\
-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
+
+filename.-arphic_technology_co.-ar_pl_mingti2l_big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/local/share/fonts/TrueType/bsmi00lp.ttf

View file

@ -1,11 +0,0 @@
--- ../../j2se/src/solaris/hpi/native_threads/src/monitor_md.c 22 Oct 2003 23:03:43 -0000 1.1.1.2
+++ ../../j2se/src/solaris/hpi/native_threads/src/monitor_md.c 21 Oct 2004 05:42:52 -0000
@@ -129,7 +129,7 @@
mid->monitor_owner = self;
mid->entry_count = 1;
return SYS_OK;
- } else if (err == EBUSY) { /* it's already locked */
+ } else if (err == EBUSY || err == EDEADLK) { /* it's already locked */
if (mid->monitor_owner == self) {
mid->entry_count++;
return SYS_OK;

View file

@ -1,24 +0,0 @@
$FreeBSD$
--- ../../hotspot/src/share/vm/interpreter/bytecodes.hpp 22 Oct 2003 23:05:03 -0000 1.1.1.3
+++ ../../hotspot/src/share/vm/interpreter/bytecodes.hpp 12 Oct 2004 05:27:27 -0000
@@ -6,6 +6,9 @@
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
+
+#include <limits.h>
+
// Bytecodes specifies all bytecodes used in the VM and
// provides utility functions to get bytecode attributes.
@@ -236,7 +239,8 @@
// Platform specific JVM bytecodes
#include "incls/_bytecodes_pd.hpp.incl"
- number_of_codes
+ number_of_codes,
+ WIDTH_HINT = INT_MAX
};
private:

View file

@ -1,38 +0,0 @@
$FreeBSD$
--- ../../hotspot/src/share/vm/interpreter/shared.hpp 22 Oct 2003 23:05:05 -0000 1.1.1.2
+++ ../../hotspot/src/share/vm/interpreter/shared.hpp 10 Oct 2004 05:03:55 -0000
@@ -41,19 +41,17 @@
// to control the C++ namespace.
class OptoReg VALUE_OBJ_CLASS_SPEC {
public:
- enum Name {
- // Chunk 0
+ typedef int Name;
#ifdef COMPILER2
- Physical = AdlcVMDeps::Physical, // Start of physical regs
+ static const Name Physical = AdlcVMDeps::Physical; // Start of physical regs
#endif
// A few oddballs at the edge of the world
- Special = -2, // All special (not allocated) values
- Bad = -1 // Not a register
- };
+ static const Name Special = -2; // All special (not allocated) values
+ static const Name Bad = -1; // Not a register
// Increment a register number. As in:
// "for ( OptoReg::Name i; i=Control; i = add(i,1) ) ..."
- static Name add( Name x, int y ) { return Name(x+y); }
+ static Name add( Name x, int y ) { return (x+y); }
// (We would like to have an operator+ for RegName, but it is not
// a class, so this would be illegal in C++.)
@@ -70,7 +68,7 @@
// when we do not yet know how big the frame will be.
class VMReg VALUE_OBJ_CLASS_SPEC {
public:
- enum Name { };
+ typedef int Name;
};

View file

@ -1,21 +0,0 @@
$FreeBSD$
--- ../../j2se/src/share/native/java/io/io_util.h.orig Wed Jul 21 08:32:49 2004
+++ ../../j2se/src/share/native/java/io/io_util.h Wed Jul 21 08:37:54 2004
@@ -10,7 +10,15 @@
extern jfieldID IO_fd_fdID;
-#if !defined(O_DSYNC) || !defined(O_SYNC)
+#ifdef _BSD_SOURCE
+#include <fcntl.h>
+#ifndef O_SYNC
+#define O_SYNC O_FSYNC
+#endif
+#ifndef O_DSYNC
+#define O_DSYNC O_FSYNC
+#endif
+#elif !defined(O_DSYNC) || !defined(O_SYNC)
#define O_SYNC (0x0800)
#define O_DSYNC (0x2000)
#endif

View file

@ -1,243 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/JSClassLoader.java 1 Jan 1970 00:00:00 -0000
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/JSClassLoader.java 3 Dec 2004 03:56:58 -0000 1.1
@@ -0,0 +1,238 @@
+/*
+ * @(#)JSClassLoader.java 1.1 04/06/20
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.plugin.javascript;
+
+import java.security.AllPermission;
+import java.security.AccessController;
+import java.security.PermissionCollection;
+import java.security.SecureClassLoader;
+import java.security.PrivilegedExceptionAction;
+import java.security.CodeSource;
+import java.io.InputStream;
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.HttpURLConnection;
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.AccessibleObject;
+import sun.net.www.ParseUtil;
+import sun.security.util.SecurityConstants;
+
+/*
+ * Create a trampoline class for JavaScript to Java
+ * method invocations.
+ *
+ */
+public final class JSClassLoader extends SecureClassLoader {
+ private static String JS_PROXY_PKG = "sun.plugin.javascript.invoke.";
+ private static String TRAMPOLINE = JS_PROXY_PKG + "JSInvoke";
+ private static Method bounce;
+
+ /*
+ * Bounce through the trampoline.
+ */
+ public static Object invoke(Method m, Object obj, Object[] params)
+ throws Exception {
+ try {
+ return bounce().invoke(null, new Object[] {m, obj, params});
+ } catch (InvocationTargetException ie) {
+ Throwable t = ie.getCause();
+
+ if (t instanceof InvocationTargetException) {
+ throw (InvocationTargetException)t;
+ } else {
+ throw ie;
+ }
+ }
+ }
+
+ /**
+ * Check the package access permission by giving a class
+ *
+ * @param clazz: The Class object trying to get access to
+ *
+ */
+ public static void checkPackageAccess(Class clazz) {
+ String clsname = clazz.getName();
+ int index = clsname.lastIndexOf(".");
+ if (index != -1) {
+ String pkgname = clsname.substring(0, index);
+ SecurityManager s = System.getSecurityManager();
+ if (s != null) {
+ s.checkPackageAccess(pkgname);
+ }
+ }
+ }
+
+ public static boolean isPackageAccessible(Class clazz) {
+ try {
+ checkPackageAccess(clazz);
+ } catch (SecurityException e) {
+ return false;
+ }
+ return true;
+ }
+
+
+ private synchronized static Method bounce() throws Exception {
+ if (bounce == null) {
+ bounce = (Method) AccessController.doPrivileged(new PrivilegedExceptionAction() {
+ public Object run() throws Exception {
+ Class[] types;
+ Class t = getTrampoline();
+ Method b;
+
+ types = new Class[] {Method.class, Object.class, Object[].class};
+ b = t.getDeclaredMethod("invoke", types);
+ ((AccessibleObject)b).setAccessible(true);
+ return b;
+ }
+ });
+ }
+ return bounce;
+ }
+
+ private static Class getTrampoline() {
+ try {
+ return Class.forName(TRAMPOLINE, true, new JSClassLoader());
+ } catch (ClassNotFoundException e) {
+ }
+ return null;
+ }
+
+
+ protected synchronized Class loadClass(String name, boolean resolve)
+ throws ClassNotFoundException
+ {
+ SecurityManager s = System.getSecurityManager();
+ if (s != null) {
+ String cname = name.replace('/', '.');
+ if (cname.startsWith("[")) {
+ int b = cname.lastIndexOf('[') + 2;
+ if (b > 1 && b < cname.length()) {
+ cname = cname.substring(b);
+ }
+ }
+ int i = cname.lastIndexOf('.');
+ if (i != -1) {
+ s.checkPackageAccess(cname.substring(0, i));
+ }
+ }
+ // First, check if the class has already been loaded
+ Class c = findLoadedClass(name);
+ if (c == null) {
+ try {
+ c = findClass(name);
+ } catch (ClassNotFoundException e) {
+ // Fall through ...
+ }
+ if (c == null) {
+ c = getParent().loadClass(name);
+ }
+ }
+ if (resolve) {
+ resolveClass(c);
+ }
+ return c;
+ }
+
+
+ protected Class findClass(final String name)
+ throws ClassNotFoundException
+ {
+ if (!name.startsWith(JS_PROXY_PKG)) {
+ throw new ClassNotFoundException(name);
+ }
+ String path = name.replace('.', '/').concat(".class");
+ URL res = getResource(path);
+ if (res != null) {
+ try {
+ return defineClass(name, res);
+ } catch (IOException e) {
+ throw new ClassNotFoundException(name, e);
+ }
+ } else {
+ throw new ClassNotFoundException(name);
+ }
+ }
+
+
+ /*
+ * Define the JavaScript proxy classes
+ */
+ private Class defineClass(String name, URL url) throws IOException {
+ byte[] b = getBytes(url);
+ CodeSource cs = new CodeSource(null, (java.security.cert.Certificate[])null);
+ if (!name.equals(TRAMPOLINE)) {
+ throw new IOException("JSClassLoader: bad name " + name);
+ }
+ return defineClass(name, b, 0, b.length, cs);
+ }
+
+
+ /*
+ * Returns the contents of the specified URL as an array of bytes.
+ */
+ private static byte[] getBytes(URL url) throws IOException {
+ URLConnection uc = url.openConnection();
+ if (uc instanceof java.net.HttpURLConnection) {
+ java.net.HttpURLConnection huc = (java.net.HttpURLConnection) uc;
+ int code = huc.getResponseCode();
+ if (code >= java.net.HttpURLConnection.HTTP_BAD_REQUEST) {
+ throw new IOException("open HTTP connection failed.");
+ }
+ }
+ int len = uc.getContentLength();
+ InputStream in = new BufferedInputStream(uc.getInputStream());
+
+ byte[] b;
+ try {
+ if (len != -1) {
+ // Read exactly len bytes from the input stream
+ b = new byte[len];
+ while (len > 0) {
+ int n = in.read(b, b.length - len, len);
+ if (n == -1) {
+ throw new IOException("unexpected EOF");
+ }
+ len -= n;
+ }
+ } else {
+ b = new byte[8192];
+ int total = 0;
+ while ((len = in.read(b, total, b.length - total)) != -1) {
+ total += len;
+ if (total >= b.length) {
+ byte[] tmp = new byte[total * 2];
+ System.arraycopy(b, 0, tmp, 0, total);
+ b = tmp;
+ }
+ }
+ // Trim array to correct size, if necessary
+ if (total != b.length) {
+ byte[] tmp = new byte[total];
+ System.arraycopy(b, 0, tmp, 0, total);
+ b = tmp;
+ }
+ }
+ } finally {
+ in.close();
+ }
+ return b;
+ }
+
+
+ protected PermissionCollection getPermissions(CodeSource codesource)
+ {
+ PermissionCollection perms = super.getPermissions(codesource);
+ perms.add(new AllPermission());
+ return perms;
+ }
+}

View file

@ -1,26 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/JSInvoke.java 1 Jan 1970 00:00:00 -0000
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/JSInvoke.java 3 Dec 2004 03:56:58 -0000 1.1
@@ -0,0 +1,21 @@
+/*
+ * @(#)JSInvoke.java 1.1 04/06/20
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.plugin.javascript.invoke;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+
+/*
+ * JavaScript to Java invocation trampoline class.
+ */
+class JSInvoke {
+ private static Object invoke(Method m, Object obj, Object[] params)
+ throws InvocationTargetException, IllegalAccessException {
+ return m.invoke(obj, params);
+ }
+}

View file

@ -1,312 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/ReflectUtil.java 1 Jan 1970 00:00:00 -0000
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/ReflectUtil.java 3 Dec 2004 03:56:58 -0000 1.1
@@ -0,0 +1,307 @@
+/*
+ * @(#)ReflectUtil.java 1.1 04/06/20
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+package sun.plugin.javascript;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.InvocationTargetException;
+import java.util.HashMap;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Iterator;
+import sun.plugin.javascript.JSClassLoader;
+
+public class ReflectUtil {
+ /*
+ * Discover the public methods on public classes
+ * and interfaces accessible to the calling
+ * JavaScript code.
+ */
+ public static Method[] getJScriptMethods(Class cls) {
+ List m = new ArrayList(); /* the valid methods we find */
+
+ /*
+ * Temporary map of method signatures when we decide
+ * that a simple call to target.getMethods() returns
+ * inaccessible methods and we must search for alternative
+ * supermethods that might be accessible. We can toss
+ * this when we're done searching.
+ */
+ Map sigs = new HashMap();
+
+ while (cls != null) {
+ boolean done = getPublicMethods(cls, m, sigs);
+ if (done) {
+ break;
+ }
+ getJScriptInterfaceMethods(cls, m, sigs);
+ cls = cls.getSuperclass();
+ }
+ return (Method[]) m.toArray(new Method[m.size()]);
+ }
+
+ /*
+ * Process the immediate interfaces of this class or interface.
+ */
+ private static void getJScriptInterfaceMethods(Class cls, List m, Map sigs) {
+ Class[] intfs = cls.getInterfaces();
+ for (int i=0; i < intfs.length; i++) {
+ Class intf = intfs[i];
+ boolean done = getPublicMethods(intf, m, sigs);
+ if (!done) {
+ getJScriptInterfaceMethods(intf, m, sigs);
+ }
+ }
+ }
+
+ /*
+ *
+ * Process the methods in this class or interface
+ */
+ private static boolean getPublicMethods(Class cls, List m, Map sigs) {
+ Method[] methods = null;
+ try {
+
+ /*
+ * This class or interface is non-public so we
+ * can't use any of it's methods. Go back and
+ * try again with a superclass or superinterface.
+ */
+ if (!Modifier.isPublic(cls.getModifiers())) {
+ return false;
+ }
+
+ if (!JSClassLoader.isPackageAccessible(cls)) {
+ return false;
+ }
+
+ methods = cls.getMethods();
+ } catch (SecurityException se) {
+ return false;
+ }
+
+ /*
+ * Check for inherited methods with non-public
+ * declaring classes. They might override and hide
+ * methods from their superclasses or
+ * superinterfaces.
+ */
+ boolean done = true;
+ for (int i=0; i < methods.length; i++) {
+ Class dc = methods[i].getDeclaringClass();
+ if (!Modifier.isPublic(dc.getModifiers())) {
+ done = false;
+ break;
+ }
+ }
+
+ /*
+ * Belatedly initialize the signature map if
+ * this is not the first time here.
+ */
+ if (sigs.isEmpty() && !m.isEmpty()) {
+ initSignatureMap(m, sigs);
+ }
+
+ if (done) {
+ /*
+ * We're done. Spray all the methods into
+ * the list and then we're out of here.
+ */
+ for (int i=0; i < methods.length; i++) {
+ addMethod(m, sigs, methods[i]);
+ }
+ } else {
+ /*
+ * Simulate cls.getDeclaredMethods() by
+ * stripping away inherited methods.
+ */
+ for (int i=0; i < methods.length; i++) {
+ Class dc = methods[i].getDeclaringClass();
+ if (cls.equals(dc)) {
+ addMethod(m, sigs, methods[i]);
+ }
+ }
+ }
+ return done;
+ }
+
+ private static void initSignatureMap(List m, Map sigs) {
+ Iterator i = m.iterator();
+ while (i.hasNext()) {
+ Method entry = (Method) i.next();
+ sigs.put(getSignature(entry), entry);
+ }
+ }
+
+ private static void addMethod(List m, Map sigs, Method method) {
+ /*
+ * Avoid work. We ignore the signature matching
+ * until the map is initialized in initSignatureMap.
+ * This has the effect of avoiding the signature
+ * work for the first call of getPublicMethods().
+ */
+ if (sigs.isEmpty()) {
+ m.add(method);
+ return;
+ }
+
+ /*
+ * Avoid adding duplicate accessible methods on
+ * the list.
+ */
+ String signature = getSignature(method);
+ if (!sigs.containsKey(signature)) {
+ m.add(method);
+ sigs.put(signature, method);
+ }
+ }
+
+ /*
+ * Return a canonical method signature for the method.
+ * We care only about the simple method name and the
+ * the number, type and order of the parameters.
+ * Exception declarations are not part of a method
+ * signature nor is the return type.
+ */
+ private static String getSignature(Method method) {
+ StringBuffer sb = new StringBuffer();
+
+ sb.append(method.getName());
+ Class[] params = method.getParameterTypes();
+ sb.append('(');
+ if (params.length > 0) {
+ sb.append(params[0].getName());
+ }
+ for (int i=1; i < params.length; i++) {
+ sb.append(',');
+ sb.append(params[i].getName());
+ }
+ sb.append(')');
+
+ return sb.toString();
+ }
+
+ /*
+ * Discover the public fields on public classes
+ * and interfaces accessible to the calling
+ * JavaScript code.
+ */
+ public static Field[] getJScriptFields(Class cls) {
+ List m = new ArrayList(); /* the valid fields we find */
+
+ /*
+ * Temporary map of field name when we decide
+ * that a simple call to target.getFields() returns
+ * inaccessible fields and we must search for alternative
+ * supermethods that might be accessible. We can toss
+ * this when we're done searching.
+ */
+ Map names = new HashMap();
+
+ while (cls != null) {
+ boolean done = getPublicFields(cls, m, names);
+ if (done) {
+ break;
+ }
+ getJScriptInterfaceFields(cls, m, names);
+ cls = cls.getSuperclass();
+ }
+ return (Field[]) m.toArray(new Field[m.size()]);
+ }
+
+ /*
+ * Process the immediate interfaces of this class or interface.
+ */
+ private static void getJScriptInterfaceFields(Class cls, List m, Map names) {
+ Class[] intfs = cls.getInterfaces();
+ for (int i=0; i < intfs.length; i++) {
+ Class intf = intfs[i];
+ boolean done = getPublicFields(intf, m, names);
+ if (!done) {
+ getJScriptInterfaceFields(intf, m, names);
+ }
+ }
+ }
+
+ /*
+ *
+ * Process the fields in this class or interface
+ */
+ private static boolean getPublicFields(Class cls, List m, Map names) {
+ Field[] fields = null;
+ try {
+
+ /*
+ * This class or interface is non-public so we
+ * can't use any of it's fields. Go back and
+ * try again with a superclass or superinterface.
+ */
+ if (!Modifier.isPublic(cls.getModifiers())) {
+ return false;
+ }
+
+ if (!JSClassLoader.isPackageAccessible(cls)) {
+ return false;
+ }
+ fields = cls.getFields();
+ } catch (SecurityException se) {
+ return false;
+ }
+
+ /*
+ * Check for inherited fields with non-public
+ * declaring classes. They might hide
+ * fields from public classes or interfaces.
+ */
+ boolean done = true;
+ for (int i=0; i < fields.length; i++) {
+ Class dc = fields[i].getDeclaringClass();
+ if (!Modifier.isPublic(dc.getModifiers())) {
+ done = false;
+ break;
+ }
+ }
+ if (done) {
+ /*
+ * We're done. Spray all the fields into
+ * the list and then we're out of here.
+ */
+ for (int i=0; i < fields.length; i++) {
+ addField(m, names, fields[i]);
+ }
+ } else {
+ /*
+ * Simulate cls.getDeclaredFields() by
+ * stripping away inherited fields.
+ */
+ for (int i=0; i < fields.length; i++) {
+ Class dc = fields[i].getDeclaringClass();
+ if (cls.equals(dc)) {
+ addField(m, names, fields[i]);
+ }
+ }
+ }
+ return done;
+ }
+
+ private static void addField(List m, Map names, Field field) {
+ /*
+ * Avoid adding duplicate accessible fields on
+ * the list.
+ */
+ String name = field.getName();
+ if (!names.containsKey(name)) {
+ m.add(field);
+ names.put(name, field);
+ }
+ }
+}
+
+

View file

@ -1,93 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/liveconnect/ReplaceMethod.java 1 Jan 1970 00:00:00 -0000
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/liveconnect/ReplaceMethod.java 3 Dec 2004 03:56:58 -0000 1.1
@@ -0,0 +1,88 @@
+/*
+ * @(#)ReplaceMethod.java 1.1 04/06/20
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+package sun.plugin.liveconnect;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import sun.plugin.javascript.JSClassLoader;
+
+public class ReplaceMethod {
+ /*
+ * Replace the inaccessible method by a suitable method on public
+ * class/interface accessible to the calling JavaScript code.
+ * Returns null if accessible method is not found.
+ */
+ static Method getJScriptMethod(Method start) {
+ Class cls = start.getDeclaringClass();
+
+ if (Modifier.isPublic(cls.getModifiers())) {
+ return start;
+ }
+
+ String name = start.getName();
+ Class[] params = start.getParameterTypes();
+
+ Method result = null;
+ while (cls != null && result == null) {
+ result = getPublicMethod(cls, name, params);
+ if (result == null) {
+ result = getJScriptInterfaceMethod(cls, name, params);
+ }
+ cls = cls.getSuperclass();
+ }
+ return result;
+ }
+
+ /*
+ * Process the immediate interfaces of this class or interface.
+ */
+ static Method getJScriptInterfaceMethod(Class cls, String name, Class[] params) {
+ Method result = null;
+ Class[] intfs = cls.getInterfaces();
+ for (int i=0; i < intfs.length && result == null; i++) {
+ Class intf = intfs[i];
+ result = getPublicMethod(intf, name, params);
+ if (result == null) {
+ result = getJScriptInterfaceMethod(intf, name, params);
+ }
+ }
+ return result;
+ }
+
+ /*
+ *
+ * Process the methods in this class or interface
+ */
+ static private Method getPublicMethod(Class cls, String name, Class[] params) {
+ try {
+ /*
+ * This class or interface is non-public so we
+ * can't use any of it's methods. Go back and
+ * try again with a superclass or superinterface.
+ */
+ if (!Modifier.isPublic(cls.getModifiers())) {
+ return null;
+ }
+
+ /*
+ * This call will fail if 'cls' is in a restricted
+ * package and we don't have permission to access
+ * it.
+ */
+ if (!JSClassLoader.isPackageAccessible(cls)) {
+ return null;
+ }
+ return cls.getMethod(name, params);
+ } catch (NoSuchMethodException nsme) {
+ return null;
+ } catch (SecurityException se) {
+ return null;
+ }
+ }
+}
+
+

View file

@ -1,351 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/liveconnect/SecureInvocation.java 22 Oct 2003 23:04:21 -0000 1.1
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/liveconnect/SecureInvocation.java 3 Dec 2004 03:56:58 -0000 1.2
@@ -1,7 +1,7 @@
/*
* @(#)SecureInvocation.java 1.21 02/08/20
*
- * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
@@ -9,7 +9,8 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
-import java.lang.reflect.Method;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
import java.lang.Thread;
import java.io.FilePermission;
import java.security.AccessControlContext;
@@ -29,7 +30,10 @@
import java.net.URL;
import java.net.MalformedURLException;
import sun.plugin.util.Trace;
-import sun.plugin.services.PlatformService;
+import sun.plugin.services.PlatformService;
+import sun.plugin.javascript.JSClassLoader;
+import sun.plugin.javascript.ReflectUtil;
+
/**
* <P> SecureInvocation is for implementating nsISecureJNI which allows
@@ -98,64 +102,64 @@
throw e;
}
}
-
- static class CallMethodThread extends Thread {
- public CallMethodThread(int handle, Class clazz, Object obj, Method method, Object[] args,
- String origin, boolean isUniversalBrowserRead,
- boolean isUniversalJavaPermission) {
- this.handle = handle;
- this.clazz = clazz;
- this.obj = obj;
- this.method = method;
- this.args = args;
- this.origin = origin;
- this.isUniversalBrowserRead = isUniversalBrowserRead;
- this.isUniversalJavaPermission = isUniversalJavaPermission;
- }
-
- public void run() {
- try {
- result = CallMethod(clazz, obj, method, args, origin, isUniversalBrowserRead, isUniversalJavaPermission);
- }
- catch(Exception e) {
- exception = e;
- }
- finally {
- PlatformService.getService().signalEvent(handle);
- }
- }
-
-
- public Object getResult() throws Exception {
- if(exception != null)
- throw exception;
- return result;
- }
-
- private Exception exception = null;
- private Object result = null;
-
- private int handle;
- private Class clazz;
- private Object obj;
- private Method method;
- private Object[] args;
- private String origin;
- private boolean isUniversalBrowserRead;
- private boolean isUniversalJavaPermission;
-
- }
-
- public static Object CallMethod(final int handle, final Class clazz, final Object obj, final Method method, final Object[] args,
- final String origin, final boolean isUniversalBrowserRead,
- final boolean isUniversalJavaPermission)
- throws Exception {
- CallMethodThread callThread = new CallMethodThread(handle, clazz, obj, method, args, origin, isUniversalBrowserRead, isUniversalJavaPermission);
- callThread.start();
- PlatformService.getService().waitEvent(handle);
- return callThread.getResult();
- }
-
+
+ static class CallMethodThread extends Thread {
+ public CallMethodThread(int handle, Class clazz, Object obj, Method method, Object[] args,
+ String origin, boolean isUniversalBrowserRead,
+ boolean isUniversalJavaPermission) {
+ this.handle = handle;
+ this.clazz = clazz;
+ this.obj = obj;
+ this.method = method;
+ this.args = args;
+ this.origin = origin;
+ this.isUniversalBrowserRead = isUniversalBrowserRead;
+ this.isUniversalJavaPermission = isUniversalJavaPermission;
+ }
+
+ public void run() {
+ try {
+ result = CallMethod(clazz, obj, method, args, origin, isUniversalBrowserRead, isUniversalJavaPermission);
+ }
+ catch(Exception e) {
+ exception = e;
+ }
+ finally {
+ PlatformService.getService().signalEvent(handle);
+ }
+ }
+
+
+ public Object getResult() throws Exception {
+ if(exception != null)
+ throw exception;
+ return result;
+ }
+
+ private Exception exception = null;
+ private Object result = null;
+
+ private int handle;
+ private Class clazz;
+ private Object obj;
+ private Method method;
+ private Object[] args;
+ private String origin;
+ private boolean isUniversalBrowserRead;
+ private boolean isUniversalJavaPermission;
+
+ }
+
+ public static Object CallMethod(final int handle, final Class clazz, final Object obj, final Method method, final Object[] args,
+ final String origin, final boolean isUniversalBrowserRead,
+ final boolean isUniversalJavaPermission)
+ throws Exception {
+ CallMethodThread callThread = new CallMethodThread(handle, clazz, obj, method, args, origin, isUniversalBrowserRead, isUniversalJavaPermission);
+ callThread.start();
+ PlatformService.getService().waitEvent(handle);
+ return callThread.getResult();
+ }
+
/**
* <P> Call a method on Java object with security context.
@@ -197,8 +201,8 @@
AccessControlContext context = new AccessControlContext(domains);
// Perform the method invocation.
- return AccessController.doPrivileged(new PrivilegedCallMethodAction(method, obj, args),
- context);
+ return AccessController.doPrivileged(new PrivilegedCallMethodAction(method,
+ obj, args), context);
} catch (Exception e) {
Trace.liveConnectPrintException(e);
throw e;
@@ -323,32 +327,6 @@
}
}
-
- /**
- * <P> Set up a protection domain according to the origin and
- * the other security related information.
- */
- private static ProtectionDomain getProtectionDomain(Class clazz,
- String origin,
- boolean byPassOrigin,
- boolean allPermission)
- throws OriginNotAllowedException, MalformedURLException
- {
- boolean trust = false;
-
- // First, check if the call is allowed
- checkLiveConnectCaller(clazz, origin, byPassOrigin);
-
- if (allPermission)
- {
- return getTrustedProtectionDomain();
- }
- else
- {
- return getDefaultProtectionDomain(origin);
- }
- }
-
/**
* <P> Check if LiveConnect call is allowed at all.
* </P>
@@ -447,7 +425,7 @@
// Obtain Java policy
Policy policy = Policy.getPolicy();
- CodeSource cs = new CodeSource(url, null);
+ CodeSource cs = new CodeSource(url, (java.security.cert.Certificate[])null);
final PermissionCollection pc = policy.getPermissions(cs);
if (url == null || url.getProtocol().equals("file")) {
@@ -516,16 +494,19 @@
PrivilegedConstructObjectAction(Constructor constructor, Object[] args)
{
- this.constructor = constructor;
- this.args = args;
+ this.constructor = constructor;
+ this.args = args;
- // Ensure the argument is not null
- if (this.args == null)
- this.args = new Object[0];
+ // Ensure the argument is not null
+ if (this.args == null)
+ this.args = new Object[0];
}
public Object run() throws Exception {
- return constructor.newInstance(args);
+ /* Check whether the caller has package access permission */
+ JSClassLoader.checkPackageAccess(constructor.getDeclaringClass());
+
+ return constructor.newInstance(args);
}
}
@@ -543,17 +524,54 @@
PrivilegedCallMethodAction(Method method, Object obj, Object[] args)
{
- this.method = method;
- this.obj = obj;
- this.args = args;
-
- // Ensure the argument is not null
- if (this.args == null)
- this.args = new Object[0];
+ this.method = method;
+
+ this.obj = obj;
+ this.args = args;
+
+ // Ensure the argument is not null
+ if (this.args == null)
+ this.args = new Object[0];
}
public Object run() throws Exception {
- return method.invoke(obj, args);
+ /*
+ * Browser uses reflection to collect methods/fields/constructors
+ * through this method call. Therefore JSClassLoader is not used
+ * in such cases. However it requires filtering to avoid exposing
+ * inaccessible methods/fields/constructors.
+ *
+ * Also, Mozilla ignores abstract methods, therefore those are
+ * replaced by the concrete class methods
+ */
+ if(obj instanceof Class) {
+ String name = method.getName();
+ Class cls = (Class)obj;
+ if(name.equals("getMethods")) {
+ Method[] methods = ReflectUtil.getJScriptMethods(cls);
+ for (int i=0; i < methods.length; i++) {
+ Method m = methods[i];
+ if (Modifier.isAbstract(m.getModifiers())) {
+ Class[] params = m.getParameterTypes();
+ methods[i] = cls.getMethod(m.getName(), params);
+ }
+ }
+ return methods;
+ }else if (name.equals("getFields")) {
+ return ReflectUtil.getJScriptFields(cls);
+ }else if (name.equals("getConstructors")) {
+ if (!Modifier.isPublic(cls.getModifiers()) ||
+ !JSClassLoader.isPackageAccessible(cls)) {
+ return new Constructor[0];
+ }
+ }
+ }
+
+ Method actualMethod = ReplaceMethod.getJScriptMethod(method);
+ if(actualMethod != null)
+ return JSClassLoader.invoke(actualMethod, obj, args);
+ else
+ throw new NoSuchMethodException(method.getName());
}
}
@@ -564,18 +582,20 @@
* </P>
*/
class PrivilegedGetFieldAction implements PrivilegedExceptionAction {
-
Field field;
Object obj;
PrivilegedGetFieldAction(Field field, Object obj)
{
- this.field = field;
- this.obj = obj;
+ this.field = field;
+ this.obj = obj;
}
- public Object run() throws Exception {
- return field.get(obj);
+ public Object run() throws Exception {
+ /* Check whether the caller has package access permission */
+ JSClassLoader.checkPackageAccess(field.getDeclaringClass());
+
+ return field.get(obj);
}
}
@@ -593,15 +613,18 @@
PrivilegedSetFieldAction(Field field, Object obj, Object val)
{
- this.field = field;
- this.obj = obj;
- this.val = val;
+ this.field = field;
+ this.obj = obj;
+ this.val = val;
}
public Object run() throws Exception {
- field.set(obj, val);
+ /* Check whether the caller has package access permission */
+ JSClassLoader.checkPackageAccess(field.getDeclaringClass());
+
+ field.set(obj, val);
return null;
}
}
-
-
+
+

View file

@ -1,16 +0,0 @@
$FreeBSD$
--- ../../deploy/src/javaws/src/share/native/util.c 22 Oct 2003 23:04:17 -0000 1.1.1.1
+++ ../../deploy/src/javaws/src/share/native/util.c 16 Jan 2004 23:50:11 -0000
@@ -27,7 +27,10 @@
/* Find size of file */
struct stat statBuf;
- stat(filename, &statBuf);
+ if (stat(filename, &statBuf) == -1) {
+ *buffer = NULL;
+ return 0;
+ }
size = statBuf.st_size;
/* Allocate memory for contents */

View file

@ -1,11 +0,0 @@
--- ../../deploy/src/plugin/oji-plugin/include/solaris/navig4/nspr/md/_pth.h 22 Oct 2003 23:04:19 -0000 1.1.1.1
+++ ../../deploy/src/plugin/oji-plugin/include/solaris/navig4/nspr/md/_pth.h 21 Oct 2004 05:47:13 -0000
@@ -52,7 +52,7 @@
#define PTHREAD_MUTEXATTR_INIT pthread_mutexattr_init
#define PTHREAD_MUTEXATTR_DESTROY pthread_mutexattr_destroy
#define PTHREAD_MUTEX_INIT(m, a) pthread_mutex_init(&(m), &(a))
-#define PTHREAD_MUTEX_IS_LOCKED(m) (EBUSY == pthread_mutex_trylock(&(m)))
+#define PTHREAD_MUTEX_IS_LOCKED(m) (0 != pthread_mutex_trylock(&(m)))
#define PTHREAD_CONDATTR_INIT pthread_condattr_init
#define PTHREAD_CONDATTR_DESTROY pthread_condattr_destroy
#define PTHREAD_COND_INIT(m, a) pthread_cond_init(&(m), &(a))

View file

@ -1,331 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/com/DispatchImpl.java 22 Oct 2003 23:04:20 -0000 1.1
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/com/DispatchImpl.java 3 Dec 2004 03:56:58 -0000 1.2
@@ -1,7 +1,7 @@
/*
- * @(#)DispatchImpl.java 1.6 03/01/23
+ * @(#)DispatchImpl.java 1.16 04/06/20
*
- * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
@@ -9,8 +9,32 @@
import sun.plugin.util.Trace;
import sun.plugin.javascript.ocx.JSObject;
-import java.applet.Applet;
+import sun.plugin.liveconnect.JavaScriptProtectionDomain;
import sun.plugin.viewer.context.IExplorerAppletContext;
+import sun.plugin.security.PluginClassLoader;
+import java.applet.Applet;
+import java.net.URL;
+import java.net.MalformedURLException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.net.SocketPermission;
+import java.io.FilePermission;
+import java.io.File;
+import java.security.AccessControlContext;
+import java.security.AccessController;
+import java.security.CodeSource;
+import java.security.Policy;
+import java.security.ProtectionDomain;
+import java.security.AllPermission;
+import java.security.Permissions;
+import java.security.Permission;
+import java.security.PermissionCollection;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
+import java.security.AccessControlException;
+import java.security.PrivilegedActionException;
+import sun.net.www.ParseUtil;
+import sun.security.util.SecurityConstants;
/**
* DispatchImpl encapsulates a Java Object and provides Dispatch interface
@@ -22,14 +46,19 @@
{
JavaClass targetClass = null;
Object targetObj = null;
+ int handle = 0;
+ int wndHandle = 0;
+ AccessControlContext context = null;
+ boolean isBridge = false;
/*
* Constructor
* @param obj the object to be wrapped
*/
- public DispatchImpl(Object obj)
+ public DispatchImpl(Object obj, int id)
{
targetObj = obj;
+ handle = id;
}
/**
@@ -40,19 +69,87 @@
* @param params Arguments.
* @return Java object.
*/
- public Object invoke(int flag, int index, Object []params)
+ public Object invoke(final int flag, final int index, final Object []params)
+ throws Exception
+ {
+ try {
+ //No security constraints in case of ActiveX bridge application
+ if(isBridge)
+ return invokeImpl(flag, index, params);
+
+ if(context == null) {
+ context = createContext();
+ }
+
+ // Invoke the method within the applet sand box security restricitions
+ return AccessController.doPrivileged(
+ new PrivilegedExceptionAction() {
+ public Object run() throws Exception{
+ return invokeImpl(flag, index, params);
+ }
+ }, context
+ );
+ }catch(Exception exc) {
+ Throwable cause = exc.getCause();
+ if(cause == null) {
+ cause = exc;
+ }
+
+ Trace.liveConnectPrintException(cause);
+ throw new Exception(cause.toString());
+ }
+ }
+
+ public AccessControlContext createContext() {
+ try {
+ ProtectionDomain[] domains = new ProtectionDomain[1];
+ //Obtain the java code origin
+ ProtectionDomain pd = (ProtectionDomain)AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return targetObj.getClass().getProtectionDomain();
+ }
+ });
+
+ CodeSource cs = null;
+ URL url = null;
+ if(pd != null)
+ cs = pd.getCodeSource();
+ if(cs != null)
+ url = cs.getLocation();
+
+ domains[0] = getJSProtectionDomain(url, targetObj.getClass());
+ return new AccessControlContext(domains);
+ }catch(Exception exc) {
+ Trace.liveConnectPrintException(exc);
+ }
+
+ return null;
+ }
+
+ /**
+ * Invoke a method according to the method index.
+ *
+ * @param flag Invoke flag
+ * @param index Method index
+ * @param params Arguments.
+ * @return Java object.
+ */
+ public Object invokeImpl(int flag, int index, Object []params)
throws Exception
{
Object retObj = null;
Dispatcher disp = null;
try {
- convertParams(params);
+ if(params != null)
+ convertParams(params);
disp = targetClass.getDispatcher(flag, index, params);
- return disp.invoke(targetObj, params);
- }
- catch (Throwable e)
- {
- //e.printStackTrace();
+ if(disp != null) {
+ retObj = disp.invoke(targetObj, params);
+ if(retObj != null)
+ retObj = Utils.convertReturn(disp.getReturnType(), retObj, handle);
+ }
+ return retObj;
+ } catch (Throwable e) {
Throwable cause = e.getCause();
if(cause == null) {
cause = e;
@@ -82,11 +179,39 @@
return targetClass;
}
+ public int getReturnType(int id){
+ return targetClass.getReturnType(id);
+ }
+
+ public int getIdForName(final String name) throws Exception{
+ try {
+ //No security constraints in case of ActiveX bridge application
+ if(isBridge)
+ return getIdForNameImpl(name);
+
+ if(context == null) {
+ context = createContext();
+ }
+
+ // Invoke the method within the applet sand box security restricitions
+ Integer retVal = (Integer)AccessController.doPrivileged(
+ new PrivilegedExceptionAction() {
+ public Object run() throws Exception{
+ return new Integer(getIdForNameImpl(name));
+ }
+ }, context
+ );
+ return retVal.intValue();
+ }catch(PrivilegedActionException pe) {
+ }
+
+ return -1;
+ }
/*
*
*/
- public int getIdForName(String name) throws Exception{
+ public int getIdForNameImpl(String name) throws Exception{
int id = -1;
if(targetClass == null && targetObj != null) {
@@ -103,27 +228,122 @@
}
/*
- *
+ * Unwraps the wrapped java object arguments
*/
private void convertParams(Object []params) {
for(int i=0;i<params.length;i++) {
if(params[i] != null && params[i] instanceof DispatchImpl) {
params[i] = ((DispatchImpl)params[i]).getWrappedObject();
} else if(params[i] != null && params[i] instanceof DispatchClient){
- JSObject jsObj = new JSObject((DispatchClient)params[i]);
- jsObj.setIExplorerAppletContext((IExplorerAppletContext)
+ JSObject jsObj = null;
+ if (!isBridge) {
+ jsObj = new JSObject((DispatchClient)params[i]);
+ jsObj.setIExplorerAppletContext((IExplorerAppletContext)
((Applet)targetObj).getAppletContext());
+ } else {
+ jsObj = new JSObject((DispatchClient)params[i], handle);
+ }
params[i] = jsObj;
}
}
}
+ /**
+ * Returns a protection domain that represents the default permission
+ * for a given URL.
+ *
+ * @param urlString URL
+ * @return protection domain.
+ */
+ public static ProtectionDomain getJSProtectionDomain(URL url, Class clazz)
+ throws MalformedURLException {
+
+ // Obtain default java applet policy
+ Policy policy = (Policy)AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return Policy.getPolicy();
+ }
+ });
+
+ CodeSource cs = new CodeSource(null, (java.security.cert.Certificate[])null);
+ final PermissionCollection pc = policy.getPermissions(cs);
+ if(url != null) {
+ Permission p;
+ String path = null;
+ try {
+ p = url.openConnection().getPermission();
+ } catch (java.io.IOException ioe) {
+ p = null;
+ }
+
+ if (p instanceof FilePermission) {
+ path = p.getName();
+ } else if ((p == null) && (url.getProtocol().equals("file"))) {
+ path = url.getFile().replace('/', File.separatorChar);
+ path = ParseUtil.decode(path);
+ } else if (p instanceof SocketPermission) {
+ /*
+ Socket permission to connect back to the host
+ */
+ String host = url.getHost();
+ pc.add(new SocketPermission(host,
+ SecurityConstants.SOCKET_CONNECT_ACCEPT_ACTION));
+ }
+
+ if(path != null &&
+ (clazz.getClassLoader() instanceof PluginClassLoader)) {
+ //We need to add an additional permission to read recursively
+ if (path.endsWith(File.separator)) {
+ path += "-";
+ } else {
+ int endIndex = path.lastIndexOf(File.separatorChar);
+ if (endIndex != -1)
+ path = path.substring(0, endIndex+1) + "-";
+ }
+
+ pc.add(new FilePermission(path, SecurityConstants.FILE_READ_ACTION));
+
+ /*
+ Socket permission to connect back to the "localhost"
+ */
+ pc.add(new SocketPermission("localhost",
+ SecurityConstants.SOCKET_CONNECT_ACCEPT_ACTION));
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ try {
+ String host = InetAddress.getLocalHost().getHostName();
+ pc.add(new SocketPermission(host,
+ SecurityConstants.SOCKET_CONNECT_ACCEPT_ACTION));
+ } catch (UnknownHostException uhe) {
+ }
+ return null;
+ }
+ });
+ }
+ }
+
+ return new JavaScriptProtectionDomain(pc);
+ }
+
public String toString() {
if(targetObj != null) {
return targetObj.toString();
}
return null;
}
+
+ public int getWindowHandle() {
+ if(wndHandle == 0) {
+ wndHandle = getWindowHandle(handle);
+ }
+ return wndHandle;
+ }
+
+ protected void setBridge() {
+ isBridge = true;
+ }
+
+ native int getWindowHandle(int id);
}

View file

@ -1,22 +0,0 @@
$FreeBSD$
--- ../../deploy/make/plugin/java/FileList.gmk 7 Nov 2003 12:15:52 -0000 1.2
+++ ../../deploy/make/plugin/java/FileList.gmk 3 Dec 2004 03:56:58 -0000 1.3
@@ -86,6 +86,9 @@
\
sun/plugin/javascript/JSObject.java \
sun/plugin/javascript/JSContext.java \
+ sun/plugin/javascript/JSClassLoader.java \
+ sun/plugin/javascript/ReflectUtil.java \
+ sun/plugin/javascript/JSInvoke.java \
\
sun/plugin/javascript/navig/Navigator.java \
sun/plugin/javascript/navig/Document.java \
@@ -125,6 +128,7 @@
sun/plugin/liveconnect/JavaScriptPermission.java \
sun/plugin/liveconnect/SecurityContextHelper.java \
sun/plugin/liveconnect/LiveConnect.java \
+ sun/plugin/liveconnect/ReplaceMethod.java \
\
sun/plugin/extension/ExtensionInstallationImpl.java \
sun/plugin/extension/ExtensionInstaller.java \

View file

@ -1,41 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/com/MethodDispatcher.java 22 Oct 2003 23:04:20 -0000 1.1
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/com/MethodDispatcher.java 3 Dec 2004 03:56:58 -0000 1.2
@@ -1,7 +1,7 @@
/*
- * @(#)MethodDispatcher.java 1.5 03/01/23
+ * @(#)MethodDispatcher.java 1.10 04/06/20
*
- * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
@@ -9,6 +9,7 @@
import java.lang.reflect.Method;
import sun.plugin.util.Trace;
+import sun.plugin.javascript.JSClassLoader;
/**
* A <code>MethodDispatcher</code> provides information about,
@@ -47,11 +48,16 @@
Object retObj = null;
if(method != null && obj != null) {
Trace.msgLiveConnectPrintln("com.method.invoke", new Object[] {method});
+ Class theClass = obj.getClass();
Object[] params = TypeConverter.convertObjectArray(
method.getParameterTypes(), args);
- retObj = Utils.convertReturn( method.getReturnType(),
- method.invoke(obj, params ));
+ // check if the class is private and the method is public
+ retObj = JSClassLoader.invoke(method, obj, params);
}
return retObj;
+ }
+
+ public Class getReturnType() {
+ return method.getReturnType();
}
}

View file

@ -1,13 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns600/nscore.h.orig Fri Jul 30 18:00:04 2004
+++ ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns600/nscore.h Fri Jul 30 23:32:31 2004
@@ -163,7 +163,7 @@
*/
/* under Metrowerks (Mac), we don't have autoconf yet */
-#ifdef __MWERKS__
+#if defined(__MWERKS__) || defined(NS_UNIX)
#define HAVE_CPP_SPECIALIZATION
#define HAVE_CPP_PARTIAL_SPECIALIZATION
#define HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX

View file

@ -1,13 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns610/nscore.h.orig Fri Jul 30 18:00:05 2004
+++ ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns610/nscore.h Fri Jul 30 23:23:36 2004
@@ -163,7 +163,7 @@
*/
/* under Metrowerks (Mac), we don't have autoconf yet */
-#ifdef __MWERKS__
+#if defined(__MWERKS__) || defined(NS_UNIX)
#define HAVE_CPP_SPECIALIZATION
#define HAVE_CPP_PARTIAL_SPECIALIZATION
#define HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX

View file

@ -1,13 +0,0 @@
$FreeBSD$
--- ../../hotspot/src/os/bsd/vm/os_bsd.hpp.orig Wed Oct 20 16:01:08 2004
+++ ../../hotspot/src/os/bsd/vm/os_bsd.hpp Wed Oct 20 16:01:30 2004
@@ -353,7 +353,7 @@
bool trylock() {
verify();
int status = pthread_mutex_trylock(_mutex);
- if (status == EBUSY)
+ if (status == EBUSY || status == EDEADLK)
return false;
assert(status == 0, "pthread_mutex_trylock");
#ifndef PRODUCT

View file

@ -893,6 +893,7 @@ jdk%%JDK_VERSION%%/jre/Welcome.html
%%MINIMAL:%%jdk%%JDK_VERSION%%/jre/bin/ControlPanel
jdk%%JDK_VERSION%%/jre/bin/java
%%MINIMAL:%%jdk%%JDK_VERSION%%/jre/bin/java_vm
%%MINIMAL:%%%%DEBUG:%%jdk%%JDK_VERSION%%/jre/bin/java_vm_g
jdk%%JDK_VERSION%%/jre/bin/keytool
jdk%%JDK_VERSION%%/jre/bin/kinit
jdk%%JDK_VERSION%%/jre/bin/klist
@ -980,6 +981,7 @@ jdk%%JDK_VERSION%%/jre/lib/i386/libioser12.so
jdk%%JDK_VERSION%%/jre/lib/i386/libjaas_unix.so
jdk%%JDK_VERSION%%/jre/lib/i386/libjava.so
%%MINIMAL:%%jdk%%JDK_VERSION%%/jre/lib/i386/libjavaplugin_jni.so
%%MINIMAL:%%%%DEBUG:%%jdk%%JDK_VERSION%%/jre/lib/i386/libjavaplugin_jni_g.so
jdk%%JDK_VERSION%%/jre/lib/i386/libjawt.so
jdk%%JDK_VERSION%%/jre/lib/i386/libjcov.so
jdk%%JDK_VERSION%%/jre/lib/i386/libjdwp.so

View file

@ -7,7 +7,6 @@
PORTNAME= jdk
PORTVERSION= ${JDK_VERSION}p${JDK_PATCHSET_VERSION}
PORTREVISION= 7
CATEGORIES= java devel
MASTER_SITES= # http://www.sun.com/software/java2/download.html
# http://www.eyesbeyond.com/freebsddom/java/jdk14.html
@ -32,7 +31,7 @@ RUN_DEPENDS+= ${X11BASE}/lib/X11/fonts/URW/fonts.dir:${PORTSDIR}/x11-fonts/urwfo
WRKSRC= ${WRKDIR}/control/make
JDK_VERSION= 1.4.2
JDK_PATCHSET_VERSION= 6
JDK_PATCHSET_VERSION= 7
LATEST_LINK= jdk14
SUN_LINUX_JDK_VERSION= 1.4.2
@ -315,6 +314,9 @@ do-install:
.endif
post-install:
.if !defined(MINIMAL)
${FIND} "${PREFIX}/jdk${JDK_VERSION}/jre/plugin" -type d | ${XARGS} ${CHMOD} a+rx
.endif
@${LOCALBASE}/bin/registervm "${PREFIX}/jdk${JDK_VERSION}/bin/java # FREEBSD-JDK${JDK_VERSION}"
@${SED} -e "s:%%JRE_HOME%%:${PREFIX}/jdk${JDK_VERSION}/jre:g" \
< ${FILESDIR}/pkg-install.in > ${PKGINSTALL}

View file

@ -2,5 +2,5 @@ MD5 (j2sdk-1_4_2-src-scsl.zip) = 387ae674dcd686f3a7a477c191aa8b65
SIZE (j2sdk-1_4_2-src-scsl.zip) = 49269919
MD5 (j2sdk-1_4_2-bin-scsl.zip) = 24877ff50ae66744090c3723968bb7dc
SIZE (j2sdk-1_4_2-bin-scsl.zip) = 2513462
MD5 (bsd-jdk14-patches-6.tar.gz) = fe01a66ce4e8425f169c1b4a88d08f87
SIZE (bsd-jdk14-patches-6.tar.gz) = 1068798
MD5 (bsd-jdk14-patches-7.tar.gz) = fe76afc2dd8651350a2f0e221d928fa5
SIZE (bsd-jdk14-patches-7.tar.gz) = 1137785

View file

@ -1,13 +0,0 @@
$FreeBSD$
--- ../../j2se/src/solaris/native/sun/awt/awt_Component.c.orig 27 Oct 2003 12:16:41 -0000 1.4
+++ ../../j2se/src/solaris/native/sun/awt/awt_Component.c 1 Mar 2004 21:36:45 -0000 1.5
@@ -1179,7 +1179,7 @@
}
XtVaSetValues(to, XmNtraversalOn, True, NULL);
}
- } else if (from != NULL) {
+ } else if (from != NULL && to != NULL) {
// disable the tree starting from uncommon part to 'from'
if (parents_from[index] == parents_to[index]) {
if (index == count_from - 1) {

View file

@ -1,53 +0,0 @@
$FreeBSD$
--- ../../j2se/src/share/native/sun/awt/font/fontmanager/fontobjects/fontObject.cpp.orig Wed Jul 7 09:33:52 2004
+++ ../../j2se/src/share/native/sun/awt/font/fontmanager/fontobjects/fontObject.cpp Wed Jul 7 13:26:03 2004
@@ -416,7 +416,11 @@
fUseCount += 1;
if (length > 0 && fFileSize > 0) {
- assert(offset < fFileSize);
+ if (offset >= fFileSize) {
+ fUseCount--;
+ return NULL;
+ }
+
if ((offset + length) > fFileSize)
length = fFileSize - offset;
@@ -431,13 +435,14 @@
"fileFontObject::ReadChunk(UInt32,UInt32,void*)\n"
);
#endif
+ fUseCount--;
return NULL;
}
off_t err = lseek(fFile, offset, SEEK_SET);
#ifdef DEBUG
if (err == (off_t)-1) {
- fprintf(stderr, "seek(%d) returned %d\n", offset, (int) err);
+ fprintf(stderr, "seek(%ld) returned %d\n", offset, (int) err);
}
#endif
@@ -448,7 +453,7 @@
int tellvalue = lseek(fFile, 0, SEEK_END);
#ifdef DEBUG
fprintf(stderr,
- "<%s> of %d, ln %d, rd %d, sz %d, tell %d, err %d\n",
+ "<%s> of %ld, ln %ld, rd %d, sz %ld, tell %d, err %d\n",
(char *)fFileName, offset, length, (int)bytesRead,
fFileSize, tellvalue, (int) err);
#endif
@@ -1457,7 +1462,9 @@
return false;
}
- this->ReadChunk(sizeof theHeader, fFontCount * sizeof *offsets, offsets);
+ if (this->ReadChunk(sizeof theHeader, fFontCount * sizeof *offsets, offsets) == NULL) {
+ return false;
+ }
for (int i=0; i<fFontCount; i++) {
offsets[i] = GET32(offsets[i]);
}

View file

@ -1,21 +0,0 @@
$FreeBSD$
--- ../../j2se/src/share/native/sun/awt/font/fontmanager/fontobjects/t2kScalerContext.cpp.orig Fri Jul 30 18:00:09 2004
+++ ../../j2se/src/share/native/sun/awt/font/fontmanager/fontobjects/t2kScalerContext.cpp Fri Jul 30 22:11:36 2004
@@ -937,14 +937,14 @@
CMAPMapper::CharsToGlyphs(
int count, const Unicode16 unicodes[], UInt32 glyphs[]) const
{
- ConvertUnicodeToGlyphs(*font, (unsigned char *)cmap, count, unicodes, glyphs);
+ ConvertUnicodeToGlyphs(*font, (byte*&)cmap, count, unicodes, glyphs);
}
void
CMAPMapper::CharsToGlyphs(
int count, const Unicode32 unicodes[], UInt32 glyphs[]) const
{
- ConvertUnicodeToGlyphs(*font, (unsigned char *)cmap, count, unicodes, glyphs);
+ ConvertUnicodeToGlyphs(*font, (byte*&)cmap, count, unicodes, glyphs);
}
//////////////////////////////////////////////////////////////////////////////

View file

@ -1,46 +0,0 @@
$FreeBSD$
--- ../../deploy/make/Makefile.orig Tue Jan 27 18:54:56 2004
+++ ../../deploy/make/Makefile Tue Jan 27 18:58:08 2004
@@ -24,17 +24,29 @@
DEPLOY_TOPDIR=..
include $(BUILDDIR)/common/Defs.gmk
+ifdef NO_PLUGIN
+BUILD_PLUGIN= false
+else
+BUILD_PLUGIN= true
+endif
+
+ifdef NO_JAVAWS
+BUILD_JAVAWS= false
+else
+BUILD_JAVAWS= true
+endif
+
all::
@$(ECHO) "$(PLATFORM) $(ARCH) $(RELEASE) deploy build started: $(shell $(DATE) '+%y-%m-%d %H:%M')"
-BUILD_PLUGIN = true
-
#
# Core.
#
JAVAWS_SUBDIR = javaws
PLUGIN_SUBDIR = plugin
+ifeq ($(BUILD_JAVAWS), true)
SUBDIRS = $(JAVAWS_SUBDIR)
+endif
ifeq ($(BUILD_PLUGIN), true)
SUBDIR += $(PLUGIN_SUBDIR)
endif
@@ -47,7 +59,9 @@
done
javaws-all: sanity-javaws
+ ifeq ($(BUILD_JAVAWS), true)
$(CD) $(BUILDDIR)/javaws ; $(MAKE) installer-int dev-all doc aubundle
+ endif
plugin-all: sanity-plugin
ifeq ($(BUILD_PLUGIN), true)

View file

@ -1,302 +0,0 @@
$FreeBSD$
--- ../../j2se/src/solaris/classes/sun/awt/motif/font.properties.zh_TW.bsd.orig 16 Aug 2002 06:04:59 -0000 1.1
+++ ../../j2se/src/solaris/classes/sun/awt/motif/font.properties.zh_TW.bsd 1 Mar 2004 21:40:08 -0000 1.2
@@ -1,235 +1,178 @@
+# %W% %E%
#
-# @(#)font.properties.zh 1.0 00/06/20
-#
-# Copyright 2000 by Sun Microsystems, Inc.,
-# 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
-# All rights reserved.
-#
-# This software is the confidential and proprietary information
-# of Sun Microsystems, Inc. ("Confidential Information"). You
-# shall not disclose such Confidential Information and shall use
-# it only in accordance with the terms of the license agreement
-# you entered into with Sun.
-#
-
-#
-# AWT Font default Properties for Simplified Chinese TurboLinux 6.0 and higher
+# Copyright 2002 Sun Microsystems, Inc. All rights reserved.
#
-# Serif font definition
+# Component Font Mappings For RedhatLinux 8.0/zh_TW
#
serif.0=-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1
-serif.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+serif.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.italic.0=-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1
-serif.italic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+serif.italic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.bold.0=-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1
-serif.bold.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+serif.bold.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.bolditalic.0=-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1
-serif.bolditalic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+serif.bolditalic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-# SansSerif font definition
-#
sansserif.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
-sansserif.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+sansserif.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
-sansserif.italic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+sansserif.italic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
-sansserif.bold.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+sansserif.bold.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
-sansserif.bolditalic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+sansserif.bolditalic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-# Monospaced font definition
-#
monospaced.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-monospaced.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+monospaced.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-monospaced.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-monospaced.italic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+monospaced.italic.0=-b&h-lucidatypewriter-medium-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+monospaced.italic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-monospaced.bold.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+monospaced.bold.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-monospaced.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-monospaced.bolditalic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+monospaced.bolditalic.0=-b&h-lucidatypewriter-bold-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+monospaced.bolditalic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-# Dialog font definition
-#
dialog.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
-dialog.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialog.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
-dialog.italic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialog.italic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
-dialog.bold.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialog.bold.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
-dialog.bolditalic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialog.bolditalic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-# DialogInput font definition
-#
dialoginput.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-dialoginput.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialoginput.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-dialoginput.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-dialoginput.italic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialoginput.italic.0=-b&h-lucidatypewriter-medium-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+dialoginput.italic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-dialoginput.bold.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
-
-dialoginput.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-dialoginput.bolditalic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialoginput.bold.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+dialoginput.bolditalic.0=-b&h-lucidatypewriter-bold-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+dialoginput.bolditalic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-# Default font definition
+# Missing Glyph Character
#
default.char=274f
-# name aliases
-#
-# alias.timesroman=serif
-# alias.helvetica=sansserif
-# alias.courier=monospaced
-
-# for backward compatibility
-#
-#zapfdingbats.0=-monotype-monotype sorts-regular-r---*-%d-*-*-p-*-adobe-dingbats
-
-# Static FontCharset info.
-#
-# This information is used by the font which is not indexed by Unicode.
-# Such fonts can use their own subclass of FontCharset.
-#
-# This information can be overriden by describing more specific style.
-# For example
-#
-# fontcharset.serif.plain.3=SpecialSymbols
-# means serif.plain.3 font's index can be retrieved with the convert() method
-# of instance of SpecialSymbols and what kind of characters serif.plain.3 font
-# has can be judged with the isCovered() method of instance of SpecialSymbols.
+# Component Font Character Encodings
#
fontcharset.serif.0=sun.io.CharToByteISO8859_1
-fontcharset.serif.1=sun.io.CharToByteMS950
+fontcharset.serif.1=sun.io.CharToByteUnicodeBigUnmarked
fontcharset.sansserif.0=sun.io.CharToByteISO8859_1
-fontcharset.sansserif.1=sun.io.CharToByteMS950
+fontcharset.sansserif.1=sun.io.CharToByteUnicodeBigUnmarked
fontcharset.monospaced.0=sun.io.CharToByteISO8859_1
-fontcharset.monospaced.1=sun.io.CharToByteMS950
+fontcharset.monospaced.1=sun.io.CharToByteUnicodeBigUnmarked
fontcharset.dialog.0=sun.io.CharToByteISO8859_1
-fontcharset.dialog.1=sun.io.CharToByteMS950
+fontcharset.dialog.1=sun.io.CharToByteUnicodeBigUnmarked
fontcharset.dialoginput.0=sun.io.CharToByteISO8859_1
-fontcharset.dialoginput.1=sun.io.CharToByteMS950
+fontcharset.dialoginput.1=sun.io.CharToByteUnicodeBigUnmarked
-# exclusion info.
-#
-# This information describe exclusion ranges for each fonts.
-#
-# 'exclusion.serif.plain.0' overrides 'exclusion.serif.0', and
-# 'exclusion.serif.0' overrides exclusion.0, and so on.
+# Exclusion Ranges
#
-# XFontSet string
-# X11 only properties
+# XFontSet Information
#
fontset.serif.plain=\
-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.serif.italic=\
-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.serif.bold=\
-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.serif.bolditalic=\
-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
-
-# SansSerif font definition
-#
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.sansserif.plain=\
-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.sansserif.italic=\
-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.sansserif.bold=\
--b&h-lucida-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-b&h-lucida-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.sansserif.bolditalic=\
--b&h-lucida-bold-i-normal-snas-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-b&h-lucida-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
-# Monospaced font definition
-#
fontset.monospaced.plain=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.monospaced.italic=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.monospaced.bold=\
--b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-,1\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.monospaced.bolditalic=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
-# Dialog font definition
-#
fontset.dialog.italic=\
-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialog.bold=\
-b&h-lucida-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialog.bolditalic=\
-b&h-lucida-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialog.plain=\
-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
-# DialogInput font definition
-#
fontset.dialoginput.italic=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialoginput.bold=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialoginput.bolditalic=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialoginput.plain=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
-#
fontset.default=\
-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
+
+filename.-arphic_technology_co.-ar_pl_mingti2l_big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/local/share/fonts/TrueType/bsmi00lp.ttf

View file

@ -1,11 +0,0 @@
--- ../../j2se/src/solaris/hpi/native_threads/src/monitor_md.c 22 Oct 2003 23:03:43 -0000 1.1.1.2
+++ ../../j2se/src/solaris/hpi/native_threads/src/monitor_md.c 21 Oct 2004 05:42:52 -0000
@@ -129,7 +129,7 @@
mid->monitor_owner = self;
mid->entry_count = 1;
return SYS_OK;
- } else if (err == EBUSY) { /* it's already locked */
+ } else if (err == EBUSY || err == EDEADLK) { /* it's already locked */
if (mid->monitor_owner == self) {
mid->entry_count++;
return SYS_OK;

View file

@ -1,24 +0,0 @@
$FreeBSD$
--- ../../hotspot/src/share/vm/interpreter/bytecodes.hpp 22 Oct 2003 23:05:03 -0000 1.1.1.3
+++ ../../hotspot/src/share/vm/interpreter/bytecodes.hpp 12 Oct 2004 05:27:27 -0000
@@ -6,6 +6,9 @@
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
+
+#include <limits.h>
+
// Bytecodes specifies all bytecodes used in the VM and
// provides utility functions to get bytecode attributes.
@@ -236,7 +239,8 @@
// Platform specific JVM bytecodes
#include "incls/_bytecodes_pd.hpp.incl"
- number_of_codes
+ number_of_codes,
+ WIDTH_HINT = INT_MAX
};
private:

View file

@ -1,38 +0,0 @@
$FreeBSD$
--- ../../hotspot/src/share/vm/interpreter/shared.hpp 22 Oct 2003 23:05:05 -0000 1.1.1.2
+++ ../../hotspot/src/share/vm/interpreter/shared.hpp 10 Oct 2004 05:03:55 -0000
@@ -41,19 +41,17 @@
// to control the C++ namespace.
class OptoReg VALUE_OBJ_CLASS_SPEC {
public:
- enum Name {
- // Chunk 0
+ typedef int Name;
#ifdef COMPILER2
- Physical = AdlcVMDeps::Physical, // Start of physical regs
+ static const Name Physical = AdlcVMDeps::Physical; // Start of physical regs
#endif
// A few oddballs at the edge of the world
- Special = -2, // All special (not allocated) values
- Bad = -1 // Not a register
- };
+ static const Name Special = -2; // All special (not allocated) values
+ static const Name Bad = -1; // Not a register
// Increment a register number. As in:
// "for ( OptoReg::Name i; i=Control; i = add(i,1) ) ..."
- static Name add( Name x, int y ) { return Name(x+y); }
+ static Name add( Name x, int y ) { return (x+y); }
// (We would like to have an operator+ for RegName, but it is not
// a class, so this would be illegal in C++.)
@@ -70,7 +68,7 @@
// when we do not yet know how big the frame will be.
class VMReg VALUE_OBJ_CLASS_SPEC {
public:
- enum Name { };
+ typedef int Name;
};

View file

@ -1,21 +0,0 @@
$FreeBSD$
--- ../../j2se/src/share/native/java/io/io_util.h.orig Wed Jul 21 08:32:49 2004
+++ ../../j2se/src/share/native/java/io/io_util.h Wed Jul 21 08:37:54 2004
@@ -10,7 +10,15 @@
extern jfieldID IO_fd_fdID;
-#if !defined(O_DSYNC) || !defined(O_SYNC)
+#ifdef _BSD_SOURCE
+#include <fcntl.h>
+#ifndef O_SYNC
+#define O_SYNC O_FSYNC
+#endif
+#ifndef O_DSYNC
+#define O_DSYNC O_FSYNC
+#endif
+#elif !defined(O_DSYNC) || !defined(O_SYNC)
#define O_SYNC (0x0800)
#define O_DSYNC (0x2000)
#endif

View file

@ -1,243 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/JSClassLoader.java 1 Jan 1970 00:00:00 -0000
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/JSClassLoader.java 3 Dec 2004 03:56:58 -0000 1.1
@@ -0,0 +1,238 @@
+/*
+ * @(#)JSClassLoader.java 1.1 04/06/20
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.plugin.javascript;
+
+import java.security.AllPermission;
+import java.security.AccessController;
+import java.security.PermissionCollection;
+import java.security.SecureClassLoader;
+import java.security.PrivilegedExceptionAction;
+import java.security.CodeSource;
+import java.io.InputStream;
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.HttpURLConnection;
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.AccessibleObject;
+import sun.net.www.ParseUtil;
+import sun.security.util.SecurityConstants;
+
+/*
+ * Create a trampoline class for JavaScript to Java
+ * method invocations.
+ *
+ */
+public final class JSClassLoader extends SecureClassLoader {
+ private static String JS_PROXY_PKG = "sun.plugin.javascript.invoke.";
+ private static String TRAMPOLINE = JS_PROXY_PKG + "JSInvoke";
+ private static Method bounce;
+
+ /*
+ * Bounce through the trampoline.
+ */
+ public static Object invoke(Method m, Object obj, Object[] params)
+ throws Exception {
+ try {
+ return bounce().invoke(null, new Object[] {m, obj, params});
+ } catch (InvocationTargetException ie) {
+ Throwable t = ie.getCause();
+
+ if (t instanceof InvocationTargetException) {
+ throw (InvocationTargetException)t;
+ } else {
+ throw ie;
+ }
+ }
+ }
+
+ /**
+ * Check the package access permission by giving a class
+ *
+ * @param clazz: The Class object trying to get access to
+ *
+ */
+ public static void checkPackageAccess(Class clazz) {
+ String clsname = clazz.getName();
+ int index = clsname.lastIndexOf(".");
+ if (index != -1) {
+ String pkgname = clsname.substring(0, index);
+ SecurityManager s = System.getSecurityManager();
+ if (s != null) {
+ s.checkPackageAccess(pkgname);
+ }
+ }
+ }
+
+ public static boolean isPackageAccessible(Class clazz) {
+ try {
+ checkPackageAccess(clazz);
+ } catch (SecurityException e) {
+ return false;
+ }
+ return true;
+ }
+
+
+ private synchronized static Method bounce() throws Exception {
+ if (bounce == null) {
+ bounce = (Method) AccessController.doPrivileged(new PrivilegedExceptionAction() {
+ public Object run() throws Exception {
+ Class[] types;
+ Class t = getTrampoline();
+ Method b;
+
+ types = new Class[] {Method.class, Object.class, Object[].class};
+ b = t.getDeclaredMethod("invoke", types);
+ ((AccessibleObject)b).setAccessible(true);
+ return b;
+ }
+ });
+ }
+ return bounce;
+ }
+
+ private static Class getTrampoline() {
+ try {
+ return Class.forName(TRAMPOLINE, true, new JSClassLoader());
+ } catch (ClassNotFoundException e) {
+ }
+ return null;
+ }
+
+
+ protected synchronized Class loadClass(String name, boolean resolve)
+ throws ClassNotFoundException
+ {
+ SecurityManager s = System.getSecurityManager();
+ if (s != null) {
+ String cname = name.replace('/', '.');
+ if (cname.startsWith("[")) {
+ int b = cname.lastIndexOf('[') + 2;
+ if (b > 1 && b < cname.length()) {
+ cname = cname.substring(b);
+ }
+ }
+ int i = cname.lastIndexOf('.');
+ if (i != -1) {
+ s.checkPackageAccess(cname.substring(0, i));
+ }
+ }
+ // First, check if the class has already been loaded
+ Class c = findLoadedClass(name);
+ if (c == null) {
+ try {
+ c = findClass(name);
+ } catch (ClassNotFoundException e) {
+ // Fall through ...
+ }
+ if (c == null) {
+ c = getParent().loadClass(name);
+ }
+ }
+ if (resolve) {
+ resolveClass(c);
+ }
+ return c;
+ }
+
+
+ protected Class findClass(final String name)
+ throws ClassNotFoundException
+ {
+ if (!name.startsWith(JS_PROXY_PKG)) {
+ throw new ClassNotFoundException(name);
+ }
+ String path = name.replace('.', '/').concat(".class");
+ URL res = getResource(path);
+ if (res != null) {
+ try {
+ return defineClass(name, res);
+ } catch (IOException e) {
+ throw new ClassNotFoundException(name, e);
+ }
+ } else {
+ throw new ClassNotFoundException(name);
+ }
+ }
+
+
+ /*
+ * Define the JavaScript proxy classes
+ */
+ private Class defineClass(String name, URL url) throws IOException {
+ byte[] b = getBytes(url);
+ CodeSource cs = new CodeSource(null, (java.security.cert.Certificate[])null);
+ if (!name.equals(TRAMPOLINE)) {
+ throw new IOException("JSClassLoader: bad name " + name);
+ }
+ return defineClass(name, b, 0, b.length, cs);
+ }
+
+
+ /*
+ * Returns the contents of the specified URL as an array of bytes.
+ */
+ private static byte[] getBytes(URL url) throws IOException {
+ URLConnection uc = url.openConnection();
+ if (uc instanceof java.net.HttpURLConnection) {
+ java.net.HttpURLConnection huc = (java.net.HttpURLConnection) uc;
+ int code = huc.getResponseCode();
+ if (code >= java.net.HttpURLConnection.HTTP_BAD_REQUEST) {
+ throw new IOException("open HTTP connection failed.");
+ }
+ }
+ int len = uc.getContentLength();
+ InputStream in = new BufferedInputStream(uc.getInputStream());
+
+ byte[] b;
+ try {
+ if (len != -1) {
+ // Read exactly len bytes from the input stream
+ b = new byte[len];
+ while (len > 0) {
+ int n = in.read(b, b.length - len, len);
+ if (n == -1) {
+ throw new IOException("unexpected EOF");
+ }
+ len -= n;
+ }
+ } else {
+ b = new byte[8192];
+ int total = 0;
+ while ((len = in.read(b, total, b.length - total)) != -1) {
+ total += len;
+ if (total >= b.length) {
+ byte[] tmp = new byte[total * 2];
+ System.arraycopy(b, 0, tmp, 0, total);
+ b = tmp;
+ }
+ }
+ // Trim array to correct size, if necessary
+ if (total != b.length) {
+ byte[] tmp = new byte[total];
+ System.arraycopy(b, 0, tmp, 0, total);
+ b = tmp;
+ }
+ }
+ } finally {
+ in.close();
+ }
+ return b;
+ }
+
+
+ protected PermissionCollection getPermissions(CodeSource codesource)
+ {
+ PermissionCollection perms = super.getPermissions(codesource);
+ perms.add(new AllPermission());
+ return perms;
+ }
+}

View file

@ -1,26 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/JSInvoke.java 1 Jan 1970 00:00:00 -0000
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/JSInvoke.java 3 Dec 2004 03:56:58 -0000 1.1
@@ -0,0 +1,21 @@
+/*
+ * @(#)JSInvoke.java 1.1 04/06/20
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.plugin.javascript.invoke;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+
+/*
+ * JavaScript to Java invocation trampoline class.
+ */
+class JSInvoke {
+ private static Object invoke(Method m, Object obj, Object[] params)
+ throws InvocationTargetException, IllegalAccessException {
+ return m.invoke(obj, params);
+ }
+}

View file

@ -1,312 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/ReflectUtil.java 1 Jan 1970 00:00:00 -0000
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/ReflectUtil.java 3 Dec 2004 03:56:58 -0000 1.1
@@ -0,0 +1,307 @@
+/*
+ * @(#)ReflectUtil.java 1.1 04/06/20
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+package sun.plugin.javascript;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.InvocationTargetException;
+import java.util.HashMap;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Iterator;
+import sun.plugin.javascript.JSClassLoader;
+
+public class ReflectUtil {
+ /*
+ * Discover the public methods on public classes
+ * and interfaces accessible to the calling
+ * JavaScript code.
+ */
+ public static Method[] getJScriptMethods(Class cls) {
+ List m = new ArrayList(); /* the valid methods we find */
+
+ /*
+ * Temporary map of method signatures when we decide
+ * that a simple call to target.getMethods() returns
+ * inaccessible methods and we must search for alternative
+ * supermethods that might be accessible. We can toss
+ * this when we're done searching.
+ */
+ Map sigs = new HashMap();
+
+ while (cls != null) {
+ boolean done = getPublicMethods(cls, m, sigs);
+ if (done) {
+ break;
+ }
+ getJScriptInterfaceMethods(cls, m, sigs);
+ cls = cls.getSuperclass();
+ }
+ return (Method[]) m.toArray(new Method[m.size()]);
+ }
+
+ /*
+ * Process the immediate interfaces of this class or interface.
+ */
+ private static void getJScriptInterfaceMethods(Class cls, List m, Map sigs) {
+ Class[] intfs = cls.getInterfaces();
+ for (int i=0; i < intfs.length; i++) {
+ Class intf = intfs[i];
+ boolean done = getPublicMethods(intf, m, sigs);
+ if (!done) {
+ getJScriptInterfaceMethods(intf, m, sigs);
+ }
+ }
+ }
+
+ /*
+ *
+ * Process the methods in this class or interface
+ */
+ private static boolean getPublicMethods(Class cls, List m, Map sigs) {
+ Method[] methods = null;
+ try {
+
+ /*
+ * This class or interface is non-public so we
+ * can't use any of it's methods. Go back and
+ * try again with a superclass or superinterface.
+ */
+ if (!Modifier.isPublic(cls.getModifiers())) {
+ return false;
+ }
+
+ if (!JSClassLoader.isPackageAccessible(cls)) {
+ return false;
+ }
+
+ methods = cls.getMethods();
+ } catch (SecurityException se) {
+ return false;
+ }
+
+ /*
+ * Check for inherited methods with non-public
+ * declaring classes. They might override and hide
+ * methods from their superclasses or
+ * superinterfaces.
+ */
+ boolean done = true;
+ for (int i=0; i < methods.length; i++) {
+ Class dc = methods[i].getDeclaringClass();
+ if (!Modifier.isPublic(dc.getModifiers())) {
+ done = false;
+ break;
+ }
+ }
+
+ /*
+ * Belatedly initialize the signature map if
+ * this is not the first time here.
+ */
+ if (sigs.isEmpty() && !m.isEmpty()) {
+ initSignatureMap(m, sigs);
+ }
+
+ if (done) {
+ /*
+ * We're done. Spray all the methods into
+ * the list and then we're out of here.
+ */
+ for (int i=0; i < methods.length; i++) {
+ addMethod(m, sigs, methods[i]);
+ }
+ } else {
+ /*
+ * Simulate cls.getDeclaredMethods() by
+ * stripping away inherited methods.
+ */
+ for (int i=0; i < methods.length; i++) {
+ Class dc = methods[i].getDeclaringClass();
+ if (cls.equals(dc)) {
+ addMethod(m, sigs, methods[i]);
+ }
+ }
+ }
+ return done;
+ }
+
+ private static void initSignatureMap(List m, Map sigs) {
+ Iterator i = m.iterator();
+ while (i.hasNext()) {
+ Method entry = (Method) i.next();
+ sigs.put(getSignature(entry), entry);
+ }
+ }
+
+ private static void addMethod(List m, Map sigs, Method method) {
+ /*
+ * Avoid work. We ignore the signature matching
+ * until the map is initialized in initSignatureMap.
+ * This has the effect of avoiding the signature
+ * work for the first call of getPublicMethods().
+ */
+ if (sigs.isEmpty()) {
+ m.add(method);
+ return;
+ }
+
+ /*
+ * Avoid adding duplicate accessible methods on
+ * the list.
+ */
+ String signature = getSignature(method);
+ if (!sigs.containsKey(signature)) {
+ m.add(method);
+ sigs.put(signature, method);
+ }
+ }
+
+ /*
+ * Return a canonical method signature for the method.
+ * We care only about the simple method name and the
+ * the number, type and order of the parameters.
+ * Exception declarations are not part of a method
+ * signature nor is the return type.
+ */
+ private static String getSignature(Method method) {
+ StringBuffer sb = new StringBuffer();
+
+ sb.append(method.getName());
+ Class[] params = method.getParameterTypes();
+ sb.append('(');
+ if (params.length > 0) {
+ sb.append(params[0].getName());
+ }
+ for (int i=1; i < params.length; i++) {
+ sb.append(',');
+ sb.append(params[i].getName());
+ }
+ sb.append(')');
+
+ return sb.toString();
+ }
+
+ /*
+ * Discover the public fields on public classes
+ * and interfaces accessible to the calling
+ * JavaScript code.
+ */
+ public static Field[] getJScriptFields(Class cls) {
+ List m = new ArrayList(); /* the valid fields we find */
+
+ /*
+ * Temporary map of field name when we decide
+ * that a simple call to target.getFields() returns
+ * inaccessible fields and we must search for alternative
+ * supermethods that might be accessible. We can toss
+ * this when we're done searching.
+ */
+ Map names = new HashMap();
+
+ while (cls != null) {
+ boolean done = getPublicFields(cls, m, names);
+ if (done) {
+ break;
+ }
+ getJScriptInterfaceFields(cls, m, names);
+ cls = cls.getSuperclass();
+ }
+ return (Field[]) m.toArray(new Field[m.size()]);
+ }
+
+ /*
+ * Process the immediate interfaces of this class or interface.
+ */
+ private static void getJScriptInterfaceFields(Class cls, List m, Map names) {
+ Class[] intfs = cls.getInterfaces();
+ for (int i=0; i < intfs.length; i++) {
+ Class intf = intfs[i];
+ boolean done = getPublicFields(intf, m, names);
+ if (!done) {
+ getJScriptInterfaceFields(intf, m, names);
+ }
+ }
+ }
+
+ /*
+ *
+ * Process the fields in this class or interface
+ */
+ private static boolean getPublicFields(Class cls, List m, Map names) {
+ Field[] fields = null;
+ try {
+
+ /*
+ * This class or interface is non-public so we
+ * can't use any of it's fields. Go back and
+ * try again with a superclass or superinterface.
+ */
+ if (!Modifier.isPublic(cls.getModifiers())) {
+ return false;
+ }
+
+ if (!JSClassLoader.isPackageAccessible(cls)) {
+ return false;
+ }
+ fields = cls.getFields();
+ } catch (SecurityException se) {
+ return false;
+ }
+
+ /*
+ * Check for inherited fields with non-public
+ * declaring classes. They might hide
+ * fields from public classes or interfaces.
+ */
+ boolean done = true;
+ for (int i=0; i < fields.length; i++) {
+ Class dc = fields[i].getDeclaringClass();
+ if (!Modifier.isPublic(dc.getModifiers())) {
+ done = false;
+ break;
+ }
+ }
+ if (done) {
+ /*
+ * We're done. Spray all the fields into
+ * the list and then we're out of here.
+ */
+ for (int i=0; i < fields.length; i++) {
+ addField(m, names, fields[i]);
+ }
+ } else {
+ /*
+ * Simulate cls.getDeclaredFields() by
+ * stripping away inherited fields.
+ */
+ for (int i=0; i < fields.length; i++) {
+ Class dc = fields[i].getDeclaringClass();
+ if (cls.equals(dc)) {
+ addField(m, names, fields[i]);
+ }
+ }
+ }
+ return done;
+ }
+
+ private static void addField(List m, Map names, Field field) {
+ /*
+ * Avoid adding duplicate accessible fields on
+ * the list.
+ */
+ String name = field.getName();
+ if (!names.containsKey(name)) {
+ m.add(field);
+ names.put(name, field);
+ }
+ }
+}
+
+

View file

@ -1,93 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/liveconnect/ReplaceMethod.java 1 Jan 1970 00:00:00 -0000
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/liveconnect/ReplaceMethod.java 3 Dec 2004 03:56:58 -0000 1.1
@@ -0,0 +1,88 @@
+/*
+ * @(#)ReplaceMethod.java 1.1 04/06/20
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+package sun.plugin.liveconnect;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import sun.plugin.javascript.JSClassLoader;
+
+public class ReplaceMethod {
+ /*
+ * Replace the inaccessible method by a suitable method on public
+ * class/interface accessible to the calling JavaScript code.
+ * Returns null if accessible method is not found.
+ */
+ static Method getJScriptMethod(Method start) {
+ Class cls = start.getDeclaringClass();
+
+ if (Modifier.isPublic(cls.getModifiers())) {
+ return start;
+ }
+
+ String name = start.getName();
+ Class[] params = start.getParameterTypes();
+
+ Method result = null;
+ while (cls != null && result == null) {
+ result = getPublicMethod(cls, name, params);
+ if (result == null) {
+ result = getJScriptInterfaceMethod(cls, name, params);
+ }
+ cls = cls.getSuperclass();
+ }
+ return result;
+ }
+
+ /*
+ * Process the immediate interfaces of this class or interface.
+ */
+ static Method getJScriptInterfaceMethod(Class cls, String name, Class[] params) {
+ Method result = null;
+ Class[] intfs = cls.getInterfaces();
+ for (int i=0; i < intfs.length && result == null; i++) {
+ Class intf = intfs[i];
+ result = getPublicMethod(intf, name, params);
+ if (result == null) {
+ result = getJScriptInterfaceMethod(intf, name, params);
+ }
+ }
+ return result;
+ }
+
+ /*
+ *
+ * Process the methods in this class or interface
+ */
+ static private Method getPublicMethod(Class cls, String name, Class[] params) {
+ try {
+ /*
+ * This class or interface is non-public so we
+ * can't use any of it's methods. Go back and
+ * try again with a superclass or superinterface.
+ */
+ if (!Modifier.isPublic(cls.getModifiers())) {
+ return null;
+ }
+
+ /*
+ * This call will fail if 'cls' is in a restricted
+ * package and we don't have permission to access
+ * it.
+ */
+ if (!JSClassLoader.isPackageAccessible(cls)) {
+ return null;
+ }
+ return cls.getMethod(name, params);
+ } catch (NoSuchMethodException nsme) {
+ return null;
+ } catch (SecurityException se) {
+ return null;
+ }
+ }
+}
+
+

View file

@ -1,351 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/liveconnect/SecureInvocation.java 22 Oct 2003 23:04:21 -0000 1.1
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/liveconnect/SecureInvocation.java 3 Dec 2004 03:56:58 -0000 1.2
@@ -1,7 +1,7 @@
/*
* @(#)SecureInvocation.java 1.21 02/08/20
*
- * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
@@ -9,7 +9,8 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
-import java.lang.reflect.Method;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
import java.lang.Thread;
import java.io.FilePermission;
import java.security.AccessControlContext;
@@ -29,7 +30,10 @@
import java.net.URL;
import java.net.MalformedURLException;
import sun.plugin.util.Trace;
-import sun.plugin.services.PlatformService;
+import sun.plugin.services.PlatformService;
+import sun.plugin.javascript.JSClassLoader;
+import sun.plugin.javascript.ReflectUtil;
+
/**
* <P> SecureInvocation is for implementating nsISecureJNI which allows
@@ -98,64 +102,64 @@
throw e;
}
}
-
- static class CallMethodThread extends Thread {
- public CallMethodThread(int handle, Class clazz, Object obj, Method method, Object[] args,
- String origin, boolean isUniversalBrowserRead,
- boolean isUniversalJavaPermission) {
- this.handle = handle;
- this.clazz = clazz;
- this.obj = obj;
- this.method = method;
- this.args = args;
- this.origin = origin;
- this.isUniversalBrowserRead = isUniversalBrowserRead;
- this.isUniversalJavaPermission = isUniversalJavaPermission;
- }
-
- public void run() {
- try {
- result = CallMethod(clazz, obj, method, args, origin, isUniversalBrowserRead, isUniversalJavaPermission);
- }
- catch(Exception e) {
- exception = e;
- }
- finally {
- PlatformService.getService().signalEvent(handle);
- }
- }
-
-
- public Object getResult() throws Exception {
- if(exception != null)
- throw exception;
- return result;
- }
-
- private Exception exception = null;
- private Object result = null;
-
- private int handle;
- private Class clazz;
- private Object obj;
- private Method method;
- private Object[] args;
- private String origin;
- private boolean isUniversalBrowserRead;
- private boolean isUniversalJavaPermission;
-
- }
-
- public static Object CallMethod(final int handle, final Class clazz, final Object obj, final Method method, final Object[] args,
- final String origin, final boolean isUniversalBrowserRead,
- final boolean isUniversalJavaPermission)
- throws Exception {
- CallMethodThread callThread = new CallMethodThread(handle, clazz, obj, method, args, origin, isUniversalBrowserRead, isUniversalJavaPermission);
- callThread.start();
- PlatformService.getService().waitEvent(handle);
- return callThread.getResult();
- }
-
+
+ static class CallMethodThread extends Thread {
+ public CallMethodThread(int handle, Class clazz, Object obj, Method method, Object[] args,
+ String origin, boolean isUniversalBrowserRead,
+ boolean isUniversalJavaPermission) {
+ this.handle = handle;
+ this.clazz = clazz;
+ this.obj = obj;
+ this.method = method;
+ this.args = args;
+ this.origin = origin;
+ this.isUniversalBrowserRead = isUniversalBrowserRead;
+ this.isUniversalJavaPermission = isUniversalJavaPermission;
+ }
+
+ public void run() {
+ try {
+ result = CallMethod(clazz, obj, method, args, origin, isUniversalBrowserRead, isUniversalJavaPermission);
+ }
+ catch(Exception e) {
+ exception = e;
+ }
+ finally {
+ PlatformService.getService().signalEvent(handle);
+ }
+ }
+
+
+ public Object getResult() throws Exception {
+ if(exception != null)
+ throw exception;
+ return result;
+ }
+
+ private Exception exception = null;
+ private Object result = null;
+
+ private int handle;
+ private Class clazz;
+ private Object obj;
+ private Method method;
+ private Object[] args;
+ private String origin;
+ private boolean isUniversalBrowserRead;
+ private boolean isUniversalJavaPermission;
+
+ }
+
+ public static Object CallMethod(final int handle, final Class clazz, final Object obj, final Method method, final Object[] args,
+ final String origin, final boolean isUniversalBrowserRead,
+ final boolean isUniversalJavaPermission)
+ throws Exception {
+ CallMethodThread callThread = new CallMethodThread(handle, clazz, obj, method, args, origin, isUniversalBrowserRead, isUniversalJavaPermission);
+ callThread.start();
+ PlatformService.getService().waitEvent(handle);
+ return callThread.getResult();
+ }
+
/**
* <P> Call a method on Java object with security context.
@@ -197,8 +201,8 @@
AccessControlContext context = new AccessControlContext(domains);
// Perform the method invocation.
- return AccessController.doPrivileged(new PrivilegedCallMethodAction(method, obj, args),
- context);
+ return AccessController.doPrivileged(new PrivilegedCallMethodAction(method,
+ obj, args), context);
} catch (Exception e) {
Trace.liveConnectPrintException(e);
throw e;
@@ -323,32 +327,6 @@
}
}
-
- /**
- * <P> Set up a protection domain according to the origin and
- * the other security related information.
- */
- private static ProtectionDomain getProtectionDomain(Class clazz,
- String origin,
- boolean byPassOrigin,
- boolean allPermission)
- throws OriginNotAllowedException, MalformedURLException
- {
- boolean trust = false;
-
- // First, check if the call is allowed
- checkLiveConnectCaller(clazz, origin, byPassOrigin);
-
- if (allPermission)
- {
- return getTrustedProtectionDomain();
- }
- else
- {
- return getDefaultProtectionDomain(origin);
- }
- }
-
/**
* <P> Check if LiveConnect call is allowed at all.
* </P>
@@ -447,7 +425,7 @@
// Obtain Java policy
Policy policy = Policy.getPolicy();
- CodeSource cs = new CodeSource(url, null);
+ CodeSource cs = new CodeSource(url, (java.security.cert.Certificate[])null);
final PermissionCollection pc = policy.getPermissions(cs);
if (url == null || url.getProtocol().equals("file")) {
@@ -516,16 +494,19 @@
PrivilegedConstructObjectAction(Constructor constructor, Object[] args)
{
- this.constructor = constructor;
- this.args = args;
+ this.constructor = constructor;
+ this.args = args;
- // Ensure the argument is not null
- if (this.args == null)
- this.args = new Object[0];
+ // Ensure the argument is not null
+ if (this.args == null)
+ this.args = new Object[0];
}
public Object run() throws Exception {
- return constructor.newInstance(args);
+ /* Check whether the caller has package access permission */
+ JSClassLoader.checkPackageAccess(constructor.getDeclaringClass());
+
+ return constructor.newInstance(args);
}
}
@@ -543,17 +524,54 @@
PrivilegedCallMethodAction(Method method, Object obj, Object[] args)
{
- this.method = method;
- this.obj = obj;
- this.args = args;
-
- // Ensure the argument is not null
- if (this.args == null)
- this.args = new Object[0];
+ this.method = method;
+
+ this.obj = obj;
+ this.args = args;
+
+ // Ensure the argument is not null
+ if (this.args == null)
+ this.args = new Object[0];
}
public Object run() throws Exception {
- return method.invoke(obj, args);
+ /*
+ * Browser uses reflection to collect methods/fields/constructors
+ * through this method call. Therefore JSClassLoader is not used
+ * in such cases. However it requires filtering to avoid exposing
+ * inaccessible methods/fields/constructors.
+ *
+ * Also, Mozilla ignores abstract methods, therefore those are
+ * replaced by the concrete class methods
+ */
+ if(obj instanceof Class) {
+ String name = method.getName();
+ Class cls = (Class)obj;
+ if(name.equals("getMethods")) {
+ Method[] methods = ReflectUtil.getJScriptMethods(cls);
+ for (int i=0; i < methods.length; i++) {
+ Method m = methods[i];
+ if (Modifier.isAbstract(m.getModifiers())) {
+ Class[] params = m.getParameterTypes();
+ methods[i] = cls.getMethod(m.getName(), params);
+ }
+ }
+ return methods;
+ }else if (name.equals("getFields")) {
+ return ReflectUtil.getJScriptFields(cls);
+ }else if (name.equals("getConstructors")) {
+ if (!Modifier.isPublic(cls.getModifiers()) ||
+ !JSClassLoader.isPackageAccessible(cls)) {
+ return new Constructor[0];
+ }
+ }
+ }
+
+ Method actualMethod = ReplaceMethod.getJScriptMethod(method);
+ if(actualMethod != null)
+ return JSClassLoader.invoke(actualMethod, obj, args);
+ else
+ throw new NoSuchMethodException(method.getName());
}
}
@@ -564,18 +582,20 @@
* </P>
*/
class PrivilegedGetFieldAction implements PrivilegedExceptionAction {
-
Field field;
Object obj;
PrivilegedGetFieldAction(Field field, Object obj)
{
- this.field = field;
- this.obj = obj;
+ this.field = field;
+ this.obj = obj;
}
- public Object run() throws Exception {
- return field.get(obj);
+ public Object run() throws Exception {
+ /* Check whether the caller has package access permission */
+ JSClassLoader.checkPackageAccess(field.getDeclaringClass());
+
+ return field.get(obj);
}
}
@@ -593,15 +613,18 @@
PrivilegedSetFieldAction(Field field, Object obj, Object val)
{
- this.field = field;
- this.obj = obj;
- this.val = val;
+ this.field = field;
+ this.obj = obj;
+ this.val = val;
}
public Object run() throws Exception {
- field.set(obj, val);
+ /* Check whether the caller has package access permission */
+ JSClassLoader.checkPackageAccess(field.getDeclaringClass());
+
+ field.set(obj, val);
return null;
}
}
-
-
+
+

View file

@ -1,16 +0,0 @@
$FreeBSD$
--- ../../deploy/src/javaws/src/share/native/util.c 22 Oct 2003 23:04:17 -0000 1.1.1.1
+++ ../../deploy/src/javaws/src/share/native/util.c 16 Jan 2004 23:50:11 -0000
@@ -27,7 +27,10 @@
/* Find size of file */
struct stat statBuf;
- stat(filename, &statBuf);
+ if (stat(filename, &statBuf) == -1) {
+ *buffer = NULL;
+ return 0;
+ }
size = statBuf.st_size;
/* Allocate memory for contents */

View file

@ -1,11 +0,0 @@
--- ../../deploy/src/plugin/oji-plugin/include/solaris/navig4/nspr/md/_pth.h 22 Oct 2003 23:04:19 -0000 1.1.1.1
+++ ../../deploy/src/plugin/oji-plugin/include/solaris/navig4/nspr/md/_pth.h 21 Oct 2004 05:47:13 -0000
@@ -52,7 +52,7 @@
#define PTHREAD_MUTEXATTR_INIT pthread_mutexattr_init
#define PTHREAD_MUTEXATTR_DESTROY pthread_mutexattr_destroy
#define PTHREAD_MUTEX_INIT(m, a) pthread_mutex_init(&(m), &(a))
-#define PTHREAD_MUTEX_IS_LOCKED(m) (EBUSY == pthread_mutex_trylock(&(m)))
+#define PTHREAD_MUTEX_IS_LOCKED(m) (0 != pthread_mutex_trylock(&(m)))
#define PTHREAD_CONDATTR_INIT pthread_condattr_init
#define PTHREAD_CONDATTR_DESTROY pthread_condattr_destroy
#define PTHREAD_COND_INIT(m, a) pthread_cond_init(&(m), &(a))

View file

@ -1,331 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/com/DispatchImpl.java 22 Oct 2003 23:04:20 -0000 1.1
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/com/DispatchImpl.java 3 Dec 2004 03:56:58 -0000 1.2
@@ -1,7 +1,7 @@
/*
- * @(#)DispatchImpl.java 1.6 03/01/23
+ * @(#)DispatchImpl.java 1.16 04/06/20
*
- * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
@@ -9,8 +9,32 @@
import sun.plugin.util.Trace;
import sun.plugin.javascript.ocx.JSObject;
-import java.applet.Applet;
+import sun.plugin.liveconnect.JavaScriptProtectionDomain;
import sun.plugin.viewer.context.IExplorerAppletContext;
+import sun.plugin.security.PluginClassLoader;
+import java.applet.Applet;
+import java.net.URL;
+import java.net.MalformedURLException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.net.SocketPermission;
+import java.io.FilePermission;
+import java.io.File;
+import java.security.AccessControlContext;
+import java.security.AccessController;
+import java.security.CodeSource;
+import java.security.Policy;
+import java.security.ProtectionDomain;
+import java.security.AllPermission;
+import java.security.Permissions;
+import java.security.Permission;
+import java.security.PermissionCollection;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
+import java.security.AccessControlException;
+import java.security.PrivilegedActionException;
+import sun.net.www.ParseUtil;
+import sun.security.util.SecurityConstants;
/**
* DispatchImpl encapsulates a Java Object and provides Dispatch interface
@@ -22,14 +46,19 @@
{
JavaClass targetClass = null;
Object targetObj = null;
+ int handle = 0;
+ int wndHandle = 0;
+ AccessControlContext context = null;
+ boolean isBridge = false;
/*
* Constructor
* @param obj the object to be wrapped
*/
- public DispatchImpl(Object obj)
+ public DispatchImpl(Object obj, int id)
{
targetObj = obj;
+ handle = id;
}
/**
@@ -40,19 +69,87 @@
* @param params Arguments.
* @return Java object.
*/
- public Object invoke(int flag, int index, Object []params)
+ public Object invoke(final int flag, final int index, final Object []params)
+ throws Exception
+ {
+ try {
+ //No security constraints in case of ActiveX bridge application
+ if(isBridge)
+ return invokeImpl(flag, index, params);
+
+ if(context == null) {
+ context = createContext();
+ }
+
+ // Invoke the method within the applet sand box security restricitions
+ return AccessController.doPrivileged(
+ new PrivilegedExceptionAction() {
+ public Object run() throws Exception{
+ return invokeImpl(flag, index, params);
+ }
+ }, context
+ );
+ }catch(Exception exc) {
+ Throwable cause = exc.getCause();
+ if(cause == null) {
+ cause = exc;
+ }
+
+ Trace.liveConnectPrintException(cause);
+ throw new Exception(cause.toString());
+ }
+ }
+
+ public AccessControlContext createContext() {
+ try {
+ ProtectionDomain[] domains = new ProtectionDomain[1];
+ //Obtain the java code origin
+ ProtectionDomain pd = (ProtectionDomain)AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return targetObj.getClass().getProtectionDomain();
+ }
+ });
+
+ CodeSource cs = null;
+ URL url = null;
+ if(pd != null)
+ cs = pd.getCodeSource();
+ if(cs != null)
+ url = cs.getLocation();
+
+ domains[0] = getJSProtectionDomain(url, targetObj.getClass());
+ return new AccessControlContext(domains);
+ }catch(Exception exc) {
+ Trace.liveConnectPrintException(exc);
+ }
+
+ return null;
+ }
+
+ /**
+ * Invoke a method according to the method index.
+ *
+ * @param flag Invoke flag
+ * @param index Method index
+ * @param params Arguments.
+ * @return Java object.
+ */
+ public Object invokeImpl(int flag, int index, Object []params)
throws Exception
{
Object retObj = null;
Dispatcher disp = null;
try {
- convertParams(params);
+ if(params != null)
+ convertParams(params);
disp = targetClass.getDispatcher(flag, index, params);
- return disp.invoke(targetObj, params);
- }
- catch (Throwable e)
- {
- //e.printStackTrace();
+ if(disp != null) {
+ retObj = disp.invoke(targetObj, params);
+ if(retObj != null)
+ retObj = Utils.convertReturn(disp.getReturnType(), retObj, handle);
+ }
+ return retObj;
+ } catch (Throwable e) {
Throwable cause = e.getCause();
if(cause == null) {
cause = e;
@@ -82,11 +179,39 @@
return targetClass;
}
+ public int getReturnType(int id){
+ return targetClass.getReturnType(id);
+ }
+
+ public int getIdForName(final String name) throws Exception{
+ try {
+ //No security constraints in case of ActiveX bridge application
+ if(isBridge)
+ return getIdForNameImpl(name);
+
+ if(context == null) {
+ context = createContext();
+ }
+
+ // Invoke the method within the applet sand box security restricitions
+ Integer retVal = (Integer)AccessController.doPrivileged(
+ new PrivilegedExceptionAction() {
+ public Object run() throws Exception{
+ return new Integer(getIdForNameImpl(name));
+ }
+ }, context
+ );
+ return retVal.intValue();
+ }catch(PrivilegedActionException pe) {
+ }
+
+ return -1;
+ }
/*
*
*/
- public int getIdForName(String name) throws Exception{
+ public int getIdForNameImpl(String name) throws Exception{
int id = -1;
if(targetClass == null && targetObj != null) {
@@ -103,27 +228,122 @@
}
/*
- *
+ * Unwraps the wrapped java object arguments
*/
private void convertParams(Object []params) {
for(int i=0;i<params.length;i++) {
if(params[i] != null && params[i] instanceof DispatchImpl) {
params[i] = ((DispatchImpl)params[i]).getWrappedObject();
} else if(params[i] != null && params[i] instanceof DispatchClient){
- JSObject jsObj = new JSObject((DispatchClient)params[i]);
- jsObj.setIExplorerAppletContext((IExplorerAppletContext)
+ JSObject jsObj = null;
+ if (!isBridge) {
+ jsObj = new JSObject((DispatchClient)params[i]);
+ jsObj.setIExplorerAppletContext((IExplorerAppletContext)
((Applet)targetObj).getAppletContext());
+ } else {
+ jsObj = new JSObject((DispatchClient)params[i], handle);
+ }
params[i] = jsObj;
}
}
}
+ /**
+ * Returns a protection domain that represents the default permission
+ * for a given URL.
+ *
+ * @param urlString URL
+ * @return protection domain.
+ */
+ public static ProtectionDomain getJSProtectionDomain(URL url, Class clazz)
+ throws MalformedURLException {
+
+ // Obtain default java applet policy
+ Policy policy = (Policy)AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return Policy.getPolicy();
+ }
+ });
+
+ CodeSource cs = new CodeSource(null, (java.security.cert.Certificate[])null);
+ final PermissionCollection pc = policy.getPermissions(cs);
+ if(url != null) {
+ Permission p;
+ String path = null;
+ try {
+ p = url.openConnection().getPermission();
+ } catch (java.io.IOException ioe) {
+ p = null;
+ }
+
+ if (p instanceof FilePermission) {
+ path = p.getName();
+ } else if ((p == null) && (url.getProtocol().equals("file"))) {
+ path = url.getFile().replace('/', File.separatorChar);
+ path = ParseUtil.decode(path);
+ } else if (p instanceof SocketPermission) {
+ /*
+ Socket permission to connect back to the host
+ */
+ String host = url.getHost();
+ pc.add(new SocketPermission(host,
+ SecurityConstants.SOCKET_CONNECT_ACCEPT_ACTION));
+ }
+
+ if(path != null &&
+ (clazz.getClassLoader() instanceof PluginClassLoader)) {
+ //We need to add an additional permission to read recursively
+ if (path.endsWith(File.separator)) {
+ path += "-";
+ } else {
+ int endIndex = path.lastIndexOf(File.separatorChar);
+ if (endIndex != -1)
+ path = path.substring(0, endIndex+1) + "-";
+ }
+
+ pc.add(new FilePermission(path, SecurityConstants.FILE_READ_ACTION));
+
+ /*
+ Socket permission to connect back to the "localhost"
+ */
+ pc.add(new SocketPermission("localhost",
+ SecurityConstants.SOCKET_CONNECT_ACCEPT_ACTION));
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ try {
+ String host = InetAddress.getLocalHost().getHostName();
+ pc.add(new SocketPermission(host,
+ SecurityConstants.SOCKET_CONNECT_ACCEPT_ACTION));
+ } catch (UnknownHostException uhe) {
+ }
+ return null;
+ }
+ });
+ }
+ }
+
+ return new JavaScriptProtectionDomain(pc);
+ }
+
public String toString() {
if(targetObj != null) {
return targetObj.toString();
}
return null;
}
+
+ public int getWindowHandle() {
+ if(wndHandle == 0) {
+ wndHandle = getWindowHandle(handle);
+ }
+ return wndHandle;
+ }
+
+ protected void setBridge() {
+ isBridge = true;
+ }
+
+ native int getWindowHandle(int id);
}

View file

@ -1,22 +0,0 @@
$FreeBSD$
--- ../../deploy/make/plugin/java/FileList.gmk 7 Nov 2003 12:15:52 -0000 1.2
+++ ../../deploy/make/plugin/java/FileList.gmk 3 Dec 2004 03:56:58 -0000 1.3
@@ -86,6 +86,9 @@
\
sun/plugin/javascript/JSObject.java \
sun/plugin/javascript/JSContext.java \
+ sun/plugin/javascript/JSClassLoader.java \
+ sun/plugin/javascript/ReflectUtil.java \
+ sun/plugin/javascript/JSInvoke.java \
\
sun/plugin/javascript/navig/Navigator.java \
sun/plugin/javascript/navig/Document.java \
@@ -125,6 +128,7 @@
sun/plugin/liveconnect/JavaScriptPermission.java \
sun/plugin/liveconnect/SecurityContextHelper.java \
sun/plugin/liveconnect/LiveConnect.java \
+ sun/plugin/liveconnect/ReplaceMethod.java \
\
sun/plugin/extension/ExtensionInstallationImpl.java \
sun/plugin/extension/ExtensionInstaller.java \

View file

@ -1,41 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/com/MethodDispatcher.java 22 Oct 2003 23:04:20 -0000 1.1
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/com/MethodDispatcher.java 3 Dec 2004 03:56:58 -0000 1.2
@@ -1,7 +1,7 @@
/*
- * @(#)MethodDispatcher.java 1.5 03/01/23
+ * @(#)MethodDispatcher.java 1.10 04/06/20
*
- * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
@@ -9,6 +9,7 @@
import java.lang.reflect.Method;
import sun.plugin.util.Trace;
+import sun.plugin.javascript.JSClassLoader;
/**
* A <code>MethodDispatcher</code> provides information about,
@@ -47,11 +48,16 @@
Object retObj = null;
if(method != null && obj != null) {
Trace.msgLiveConnectPrintln("com.method.invoke", new Object[] {method});
+ Class theClass = obj.getClass();
Object[] params = TypeConverter.convertObjectArray(
method.getParameterTypes(), args);
- retObj = Utils.convertReturn( method.getReturnType(),
- method.invoke(obj, params ));
+ // check if the class is private and the method is public
+ retObj = JSClassLoader.invoke(method, obj, params);
}
return retObj;
+ }
+
+ public Class getReturnType() {
+ return method.getReturnType();
}
}

View file

@ -1,13 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns600/nscore.h.orig Fri Jul 30 18:00:04 2004
+++ ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns600/nscore.h Fri Jul 30 23:32:31 2004
@@ -163,7 +163,7 @@
*/
/* under Metrowerks (Mac), we don't have autoconf yet */
-#ifdef __MWERKS__
+#if defined(__MWERKS__) || defined(NS_UNIX)
#define HAVE_CPP_SPECIALIZATION
#define HAVE_CPP_PARTIAL_SPECIALIZATION
#define HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX

View file

@ -1,13 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns610/nscore.h.orig Fri Jul 30 18:00:05 2004
+++ ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns610/nscore.h Fri Jul 30 23:23:36 2004
@@ -163,7 +163,7 @@
*/
/* under Metrowerks (Mac), we don't have autoconf yet */
-#ifdef __MWERKS__
+#if defined(__MWERKS__) || defined(NS_UNIX)
#define HAVE_CPP_SPECIALIZATION
#define HAVE_CPP_PARTIAL_SPECIALIZATION
#define HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX

View file

@ -1,13 +0,0 @@
$FreeBSD$
--- ../../hotspot/src/os/bsd/vm/os_bsd.hpp.orig Wed Oct 20 16:01:08 2004
+++ ../../hotspot/src/os/bsd/vm/os_bsd.hpp Wed Oct 20 16:01:30 2004
@@ -353,7 +353,7 @@
bool trylock() {
verify();
int status = pthread_mutex_trylock(_mutex);
- if (status == EBUSY)
+ if (status == EBUSY || status == EDEADLK)
return false;
assert(status == 0, "pthread_mutex_trylock");
#ifndef PRODUCT

View file

@ -893,6 +893,7 @@ jdk%%JDK_VERSION%%/jre/Welcome.html
%%MINIMAL:%%jdk%%JDK_VERSION%%/jre/bin/ControlPanel
jdk%%JDK_VERSION%%/jre/bin/java
%%MINIMAL:%%jdk%%JDK_VERSION%%/jre/bin/java_vm
%%MINIMAL:%%%%DEBUG:%%jdk%%JDK_VERSION%%/jre/bin/java_vm_g
jdk%%JDK_VERSION%%/jre/bin/keytool
jdk%%JDK_VERSION%%/jre/bin/kinit
jdk%%JDK_VERSION%%/jre/bin/klist
@ -980,6 +981,7 @@ jdk%%JDK_VERSION%%/jre/lib/i386/libioser12.so
jdk%%JDK_VERSION%%/jre/lib/i386/libjaas_unix.so
jdk%%JDK_VERSION%%/jre/lib/i386/libjava.so
%%MINIMAL:%%jdk%%JDK_VERSION%%/jre/lib/i386/libjavaplugin_jni.so
%%MINIMAL:%%%%DEBUG:%%jdk%%JDK_VERSION%%/jre/lib/i386/libjavaplugin_jni_g.so
jdk%%JDK_VERSION%%/jre/lib/i386/libjawt.so
jdk%%JDK_VERSION%%/jre/lib/i386/libjcov.so
jdk%%JDK_VERSION%%/jre/lib/i386/libjdwp.so

View file

@ -7,7 +7,6 @@
PORTNAME= jdk
PORTVERSION= ${JDK_VERSION}p${JDK_PATCHSET_VERSION}
PORTREVISION= 7
CATEGORIES= java devel
MASTER_SITES= # http://www.sun.com/software/java2/download.html
# http://www.eyesbeyond.com/freebsddom/java/jdk14.html
@ -32,7 +31,7 @@ RUN_DEPENDS+= ${X11BASE}/lib/X11/fonts/URW/fonts.dir:${PORTSDIR}/x11-fonts/urwfo
WRKSRC= ${WRKDIR}/control/make
JDK_VERSION= 1.4.2
JDK_PATCHSET_VERSION= 6
JDK_PATCHSET_VERSION= 7
LATEST_LINK= jdk14
SUN_LINUX_JDK_VERSION= 1.4.2
@ -315,6 +314,9 @@ do-install:
.endif
post-install:
.if !defined(MINIMAL)
${FIND} "${PREFIX}/jdk${JDK_VERSION}/jre/plugin" -type d | ${XARGS} ${CHMOD} a+rx
.endif
@${LOCALBASE}/bin/registervm "${PREFIX}/jdk${JDK_VERSION}/bin/java # FREEBSD-JDK${JDK_VERSION}"
@${SED} -e "s:%%JRE_HOME%%:${PREFIX}/jdk${JDK_VERSION}/jre:g" \
< ${FILESDIR}/pkg-install.in > ${PKGINSTALL}

View file

@ -2,5 +2,5 @@ MD5 (j2sdk-1_4_2-src-scsl.zip) = 387ae674dcd686f3a7a477c191aa8b65
SIZE (j2sdk-1_4_2-src-scsl.zip) = 49269919
MD5 (j2sdk-1_4_2-bin-scsl.zip) = 24877ff50ae66744090c3723968bb7dc
SIZE (j2sdk-1_4_2-bin-scsl.zip) = 2513462
MD5 (bsd-jdk14-patches-6.tar.gz) = fe01a66ce4e8425f169c1b4a88d08f87
SIZE (bsd-jdk14-patches-6.tar.gz) = 1068798
MD5 (bsd-jdk14-patches-7.tar.gz) = fe76afc2dd8651350a2f0e221d928fa5
SIZE (bsd-jdk14-patches-7.tar.gz) = 1137785

View file

@ -1,13 +0,0 @@
$FreeBSD$
--- ../../j2se/src/solaris/native/sun/awt/awt_Component.c.orig 27 Oct 2003 12:16:41 -0000 1.4
+++ ../../j2se/src/solaris/native/sun/awt/awt_Component.c 1 Mar 2004 21:36:45 -0000 1.5
@@ -1179,7 +1179,7 @@
}
XtVaSetValues(to, XmNtraversalOn, True, NULL);
}
- } else if (from != NULL) {
+ } else if (from != NULL && to != NULL) {
// disable the tree starting from uncommon part to 'from'
if (parents_from[index] == parents_to[index]) {
if (index == count_from - 1) {

View file

@ -1,53 +0,0 @@
$FreeBSD$
--- ../../j2se/src/share/native/sun/awt/font/fontmanager/fontobjects/fontObject.cpp.orig Wed Jul 7 09:33:52 2004
+++ ../../j2se/src/share/native/sun/awt/font/fontmanager/fontobjects/fontObject.cpp Wed Jul 7 13:26:03 2004
@@ -416,7 +416,11 @@
fUseCount += 1;
if (length > 0 && fFileSize > 0) {
- assert(offset < fFileSize);
+ if (offset >= fFileSize) {
+ fUseCount--;
+ return NULL;
+ }
+
if ((offset + length) > fFileSize)
length = fFileSize - offset;
@@ -431,13 +435,14 @@
"fileFontObject::ReadChunk(UInt32,UInt32,void*)\n"
);
#endif
+ fUseCount--;
return NULL;
}
off_t err = lseek(fFile, offset, SEEK_SET);
#ifdef DEBUG
if (err == (off_t)-1) {
- fprintf(stderr, "seek(%d) returned %d\n", offset, (int) err);
+ fprintf(stderr, "seek(%ld) returned %d\n", offset, (int) err);
}
#endif
@@ -448,7 +453,7 @@
int tellvalue = lseek(fFile, 0, SEEK_END);
#ifdef DEBUG
fprintf(stderr,
- "<%s> of %d, ln %d, rd %d, sz %d, tell %d, err %d\n",
+ "<%s> of %ld, ln %ld, rd %d, sz %ld, tell %d, err %d\n",
(char *)fFileName, offset, length, (int)bytesRead,
fFileSize, tellvalue, (int) err);
#endif
@@ -1457,7 +1462,9 @@
return false;
}
- this->ReadChunk(sizeof theHeader, fFontCount * sizeof *offsets, offsets);
+ if (this->ReadChunk(sizeof theHeader, fFontCount * sizeof *offsets, offsets) == NULL) {
+ return false;
+ }
for (int i=0; i<fFontCount; i++) {
offsets[i] = GET32(offsets[i]);
}

View file

@ -1,21 +0,0 @@
$FreeBSD$
--- ../../j2se/src/share/native/sun/awt/font/fontmanager/fontobjects/t2kScalerContext.cpp.orig Fri Jul 30 18:00:09 2004
+++ ../../j2se/src/share/native/sun/awt/font/fontmanager/fontobjects/t2kScalerContext.cpp Fri Jul 30 22:11:36 2004
@@ -937,14 +937,14 @@
CMAPMapper::CharsToGlyphs(
int count, const Unicode16 unicodes[], UInt32 glyphs[]) const
{
- ConvertUnicodeToGlyphs(*font, (unsigned char *)cmap, count, unicodes, glyphs);
+ ConvertUnicodeToGlyphs(*font, (byte*&)cmap, count, unicodes, glyphs);
}
void
CMAPMapper::CharsToGlyphs(
int count, const Unicode32 unicodes[], UInt32 glyphs[]) const
{
- ConvertUnicodeToGlyphs(*font, (unsigned char *)cmap, count, unicodes, glyphs);
+ ConvertUnicodeToGlyphs(*font, (byte*&)cmap, count, unicodes, glyphs);
}
//////////////////////////////////////////////////////////////////////////////

View file

@ -1,46 +0,0 @@
$FreeBSD$
--- ../../deploy/make/Makefile.orig Tue Jan 27 18:54:56 2004
+++ ../../deploy/make/Makefile Tue Jan 27 18:58:08 2004
@@ -24,17 +24,29 @@
DEPLOY_TOPDIR=..
include $(BUILDDIR)/common/Defs.gmk
+ifdef NO_PLUGIN
+BUILD_PLUGIN= false
+else
+BUILD_PLUGIN= true
+endif
+
+ifdef NO_JAVAWS
+BUILD_JAVAWS= false
+else
+BUILD_JAVAWS= true
+endif
+
all::
@$(ECHO) "$(PLATFORM) $(ARCH) $(RELEASE) deploy build started: $(shell $(DATE) '+%y-%m-%d %H:%M')"
-BUILD_PLUGIN = true
-
#
# Core.
#
JAVAWS_SUBDIR = javaws
PLUGIN_SUBDIR = plugin
+ifeq ($(BUILD_JAVAWS), true)
SUBDIRS = $(JAVAWS_SUBDIR)
+endif
ifeq ($(BUILD_PLUGIN), true)
SUBDIR += $(PLUGIN_SUBDIR)
endif
@@ -47,7 +59,9 @@
done
javaws-all: sanity-javaws
+ ifeq ($(BUILD_JAVAWS), true)
$(CD) $(BUILDDIR)/javaws ; $(MAKE) installer-int dev-all doc aubundle
+ endif
plugin-all: sanity-plugin
ifeq ($(BUILD_PLUGIN), true)

View file

@ -1,302 +0,0 @@
$FreeBSD$
--- ../../j2se/src/solaris/classes/sun/awt/motif/font.properties.zh_TW.bsd.orig 16 Aug 2002 06:04:59 -0000 1.1
+++ ../../j2se/src/solaris/classes/sun/awt/motif/font.properties.zh_TW.bsd 1 Mar 2004 21:40:08 -0000 1.2
@@ -1,235 +1,178 @@
+# %W% %E%
#
-# @(#)font.properties.zh 1.0 00/06/20
-#
-# Copyright 2000 by Sun Microsystems, Inc.,
-# 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
-# All rights reserved.
-#
-# This software is the confidential and proprietary information
-# of Sun Microsystems, Inc. ("Confidential Information"). You
-# shall not disclose such Confidential Information and shall use
-# it only in accordance with the terms of the license agreement
-# you entered into with Sun.
-#
-
-#
-# AWT Font default Properties for Simplified Chinese TurboLinux 6.0 and higher
+# Copyright 2002 Sun Microsystems, Inc. All rights reserved.
#
-# Serif font definition
+# Component Font Mappings For RedhatLinux 8.0/zh_TW
#
serif.0=-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1
-serif.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+serif.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.italic.0=-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1
-serif.italic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+serif.italic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.bold.0=-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1
-serif.bold.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+serif.bold.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.bolditalic.0=-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1
-serif.bolditalic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+serif.bolditalic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-# SansSerif font definition
-#
sansserif.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
-sansserif.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+sansserif.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
-sansserif.italic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+sansserif.italic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
-sansserif.bold.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+sansserif.bold.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
-sansserif.bolditalic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+sansserif.bolditalic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-# Monospaced font definition
-#
monospaced.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-monospaced.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+monospaced.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-monospaced.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-monospaced.italic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+monospaced.italic.0=-b&h-lucidatypewriter-medium-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+monospaced.italic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-monospaced.bold.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+monospaced.bold.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-monospaced.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-monospaced.bolditalic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+monospaced.bolditalic.0=-b&h-lucidatypewriter-bold-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+monospaced.bolditalic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-# Dialog font definition
-#
dialog.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
-dialog.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialog.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
-dialog.italic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialog.italic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
-dialog.bold.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialog.bold.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
-dialog.bolditalic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialog.bolditalic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-# DialogInput font definition
-#
dialoginput.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-dialoginput.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialoginput.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-dialoginput.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-dialoginput.italic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialoginput.italic.0=-b&h-lucidatypewriter-medium-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+dialoginput.italic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-dialoginput.bold.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
-
-dialoginput.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
-dialoginput.bolditalic.1=-Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+dialoginput.bold.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+dialoginput.bolditalic.0=-b&h-lucidatypewriter-bold-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+dialoginput.bolditalic.1=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
-# Default font definition
+# Missing Glyph Character
#
default.char=274f
-# name aliases
-#
-# alias.timesroman=serif
-# alias.helvetica=sansserif
-# alias.courier=monospaced
-
-# for backward compatibility
-#
-#zapfdingbats.0=-monotype-monotype sorts-regular-r---*-%d-*-*-p-*-adobe-dingbats
-
-# Static FontCharset info.
-#
-# This information is used by the font which is not indexed by Unicode.
-# Such fonts can use their own subclass of FontCharset.
-#
-# This information can be overriden by describing more specific style.
-# For example
-#
-# fontcharset.serif.plain.3=SpecialSymbols
-# means serif.plain.3 font's index can be retrieved with the convert() method
-# of instance of SpecialSymbols and what kind of characters serif.plain.3 font
-# has can be judged with the isCovered() method of instance of SpecialSymbols.
+# Component Font Character Encodings
#
fontcharset.serif.0=sun.io.CharToByteISO8859_1
-fontcharset.serif.1=sun.io.CharToByteMS950
+fontcharset.serif.1=sun.io.CharToByteUnicodeBigUnmarked
fontcharset.sansserif.0=sun.io.CharToByteISO8859_1
-fontcharset.sansserif.1=sun.io.CharToByteMS950
+fontcharset.sansserif.1=sun.io.CharToByteUnicodeBigUnmarked
fontcharset.monospaced.0=sun.io.CharToByteISO8859_1
-fontcharset.monospaced.1=sun.io.CharToByteMS950
+fontcharset.monospaced.1=sun.io.CharToByteUnicodeBigUnmarked
fontcharset.dialog.0=sun.io.CharToByteISO8859_1
-fontcharset.dialog.1=sun.io.CharToByteMS950
+fontcharset.dialog.1=sun.io.CharToByteUnicodeBigUnmarked
fontcharset.dialoginput.0=sun.io.CharToByteISO8859_1
-fontcharset.dialoginput.1=sun.io.CharToByteMS950
+fontcharset.dialoginput.1=sun.io.CharToByteUnicodeBigUnmarked
-# exclusion info.
-#
-# This information describe exclusion ranges for each fonts.
-#
-# 'exclusion.serif.plain.0' overrides 'exclusion.serif.0', and
-# 'exclusion.serif.0' overrides exclusion.0, and so on.
+# Exclusion Ranges
#
-# XFontSet string
-# X11 only properties
+# XFontSet Information
#
fontset.serif.plain=\
-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.serif.italic=\
-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.serif.bold=\
-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.serif.bolditalic=\
-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
-
-# SansSerif font definition
-#
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.sansserif.plain=\
-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.sansserif.italic=\
-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.sansserif.bold=\
--b&h-lucida-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-b&h-lucida-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.sansserif.bolditalic=\
--b&h-lucida-bold-i-normal-snas-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-b&h-lucida-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
-# Monospaced font definition
-#
fontset.monospaced.plain=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.monospaced.italic=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.monospaced.bold=\
--b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-,1\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.monospaced.bolditalic=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
-# Dialog font definition
-#
fontset.dialog.italic=\
-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialog.bold=\
-b&h-lucida-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialog.bolditalic=\
-b&h-lucida-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialog.plain=\
-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
-# DialogInput font definition
-#
fontset.dialoginput.italic=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialoginput.bold=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialoginput.bolditalic=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
fontset.dialoginput.plain=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
-#
fontset.default=\
-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
--Arphic-AR PL Mingti2L Big5-medium-r-normal--*-%d-*-*-c-*-big5-0
+-kc-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
+
+filename.-arphic_technology_co.-ar_pl_mingti2l_big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/local/share/fonts/TrueType/bsmi00lp.ttf

View file

@ -1,11 +0,0 @@
--- ../../j2se/src/solaris/hpi/native_threads/src/monitor_md.c 22 Oct 2003 23:03:43 -0000 1.1.1.2
+++ ../../j2se/src/solaris/hpi/native_threads/src/monitor_md.c 21 Oct 2004 05:42:52 -0000
@@ -129,7 +129,7 @@
mid->monitor_owner = self;
mid->entry_count = 1;
return SYS_OK;
- } else if (err == EBUSY) { /* it's already locked */
+ } else if (err == EBUSY || err == EDEADLK) { /* it's already locked */
if (mid->monitor_owner == self) {
mid->entry_count++;
return SYS_OK;

View file

@ -1,24 +0,0 @@
$FreeBSD$
--- ../../hotspot/src/share/vm/interpreter/bytecodes.hpp 22 Oct 2003 23:05:03 -0000 1.1.1.3
+++ ../../hotspot/src/share/vm/interpreter/bytecodes.hpp 12 Oct 2004 05:27:27 -0000
@@ -6,6 +6,9 @@
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
+
+#include <limits.h>
+
// Bytecodes specifies all bytecodes used in the VM and
// provides utility functions to get bytecode attributes.
@@ -236,7 +239,8 @@
// Platform specific JVM bytecodes
#include "incls/_bytecodes_pd.hpp.incl"
- number_of_codes
+ number_of_codes,
+ WIDTH_HINT = INT_MAX
};
private:

View file

@ -1,38 +0,0 @@
$FreeBSD$
--- ../../hotspot/src/share/vm/interpreter/shared.hpp 22 Oct 2003 23:05:05 -0000 1.1.1.2
+++ ../../hotspot/src/share/vm/interpreter/shared.hpp 10 Oct 2004 05:03:55 -0000
@@ -41,19 +41,17 @@
// to control the C++ namespace.
class OptoReg VALUE_OBJ_CLASS_SPEC {
public:
- enum Name {
- // Chunk 0
+ typedef int Name;
#ifdef COMPILER2
- Physical = AdlcVMDeps::Physical, // Start of physical regs
+ static const Name Physical = AdlcVMDeps::Physical; // Start of physical regs
#endif
// A few oddballs at the edge of the world
- Special = -2, // All special (not allocated) values
- Bad = -1 // Not a register
- };
+ static const Name Special = -2; // All special (not allocated) values
+ static const Name Bad = -1; // Not a register
// Increment a register number. As in:
// "for ( OptoReg::Name i; i=Control; i = add(i,1) ) ..."
- static Name add( Name x, int y ) { return Name(x+y); }
+ static Name add( Name x, int y ) { return (x+y); }
// (We would like to have an operator+ for RegName, but it is not
// a class, so this would be illegal in C++.)
@@ -70,7 +68,7 @@
// when we do not yet know how big the frame will be.
class VMReg VALUE_OBJ_CLASS_SPEC {
public:
- enum Name { };
+ typedef int Name;
};

View file

@ -1,21 +0,0 @@
$FreeBSD$
--- ../../j2se/src/share/native/java/io/io_util.h.orig Wed Jul 21 08:32:49 2004
+++ ../../j2se/src/share/native/java/io/io_util.h Wed Jul 21 08:37:54 2004
@@ -10,7 +10,15 @@
extern jfieldID IO_fd_fdID;
-#if !defined(O_DSYNC) || !defined(O_SYNC)
+#ifdef _BSD_SOURCE
+#include <fcntl.h>
+#ifndef O_SYNC
+#define O_SYNC O_FSYNC
+#endif
+#ifndef O_DSYNC
+#define O_DSYNC O_FSYNC
+#endif
+#elif !defined(O_DSYNC) || !defined(O_SYNC)
#define O_SYNC (0x0800)
#define O_DSYNC (0x2000)
#endif

View file

@ -1,243 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/JSClassLoader.java 1 Jan 1970 00:00:00 -0000
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/JSClassLoader.java 3 Dec 2004 03:56:58 -0000 1.1
@@ -0,0 +1,238 @@
+/*
+ * @(#)JSClassLoader.java 1.1 04/06/20
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.plugin.javascript;
+
+import java.security.AllPermission;
+import java.security.AccessController;
+import java.security.PermissionCollection;
+import java.security.SecureClassLoader;
+import java.security.PrivilegedExceptionAction;
+import java.security.CodeSource;
+import java.io.InputStream;
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.HttpURLConnection;
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.AccessibleObject;
+import sun.net.www.ParseUtil;
+import sun.security.util.SecurityConstants;
+
+/*
+ * Create a trampoline class for JavaScript to Java
+ * method invocations.
+ *
+ */
+public final class JSClassLoader extends SecureClassLoader {
+ private static String JS_PROXY_PKG = "sun.plugin.javascript.invoke.";
+ private static String TRAMPOLINE = JS_PROXY_PKG + "JSInvoke";
+ private static Method bounce;
+
+ /*
+ * Bounce through the trampoline.
+ */
+ public static Object invoke(Method m, Object obj, Object[] params)
+ throws Exception {
+ try {
+ return bounce().invoke(null, new Object[] {m, obj, params});
+ } catch (InvocationTargetException ie) {
+ Throwable t = ie.getCause();
+
+ if (t instanceof InvocationTargetException) {
+ throw (InvocationTargetException)t;
+ } else {
+ throw ie;
+ }
+ }
+ }
+
+ /**
+ * Check the package access permission by giving a class
+ *
+ * @param clazz: The Class object trying to get access to
+ *
+ */
+ public static void checkPackageAccess(Class clazz) {
+ String clsname = clazz.getName();
+ int index = clsname.lastIndexOf(".");
+ if (index != -1) {
+ String pkgname = clsname.substring(0, index);
+ SecurityManager s = System.getSecurityManager();
+ if (s != null) {
+ s.checkPackageAccess(pkgname);
+ }
+ }
+ }
+
+ public static boolean isPackageAccessible(Class clazz) {
+ try {
+ checkPackageAccess(clazz);
+ } catch (SecurityException e) {
+ return false;
+ }
+ return true;
+ }
+
+
+ private synchronized static Method bounce() throws Exception {
+ if (bounce == null) {
+ bounce = (Method) AccessController.doPrivileged(new PrivilegedExceptionAction() {
+ public Object run() throws Exception {
+ Class[] types;
+ Class t = getTrampoline();
+ Method b;
+
+ types = new Class[] {Method.class, Object.class, Object[].class};
+ b = t.getDeclaredMethod("invoke", types);
+ ((AccessibleObject)b).setAccessible(true);
+ return b;
+ }
+ });
+ }
+ return bounce;
+ }
+
+ private static Class getTrampoline() {
+ try {
+ return Class.forName(TRAMPOLINE, true, new JSClassLoader());
+ } catch (ClassNotFoundException e) {
+ }
+ return null;
+ }
+
+
+ protected synchronized Class loadClass(String name, boolean resolve)
+ throws ClassNotFoundException
+ {
+ SecurityManager s = System.getSecurityManager();
+ if (s != null) {
+ String cname = name.replace('/', '.');
+ if (cname.startsWith("[")) {
+ int b = cname.lastIndexOf('[') + 2;
+ if (b > 1 && b < cname.length()) {
+ cname = cname.substring(b);
+ }
+ }
+ int i = cname.lastIndexOf('.');
+ if (i != -1) {
+ s.checkPackageAccess(cname.substring(0, i));
+ }
+ }
+ // First, check if the class has already been loaded
+ Class c = findLoadedClass(name);
+ if (c == null) {
+ try {
+ c = findClass(name);
+ } catch (ClassNotFoundException e) {
+ // Fall through ...
+ }
+ if (c == null) {
+ c = getParent().loadClass(name);
+ }
+ }
+ if (resolve) {
+ resolveClass(c);
+ }
+ return c;
+ }
+
+
+ protected Class findClass(final String name)
+ throws ClassNotFoundException
+ {
+ if (!name.startsWith(JS_PROXY_PKG)) {
+ throw new ClassNotFoundException(name);
+ }
+ String path = name.replace('.', '/').concat(".class");
+ URL res = getResource(path);
+ if (res != null) {
+ try {
+ return defineClass(name, res);
+ } catch (IOException e) {
+ throw new ClassNotFoundException(name, e);
+ }
+ } else {
+ throw new ClassNotFoundException(name);
+ }
+ }
+
+
+ /*
+ * Define the JavaScript proxy classes
+ */
+ private Class defineClass(String name, URL url) throws IOException {
+ byte[] b = getBytes(url);
+ CodeSource cs = new CodeSource(null, (java.security.cert.Certificate[])null);
+ if (!name.equals(TRAMPOLINE)) {
+ throw new IOException("JSClassLoader: bad name " + name);
+ }
+ return defineClass(name, b, 0, b.length, cs);
+ }
+
+
+ /*
+ * Returns the contents of the specified URL as an array of bytes.
+ */
+ private static byte[] getBytes(URL url) throws IOException {
+ URLConnection uc = url.openConnection();
+ if (uc instanceof java.net.HttpURLConnection) {
+ java.net.HttpURLConnection huc = (java.net.HttpURLConnection) uc;
+ int code = huc.getResponseCode();
+ if (code >= java.net.HttpURLConnection.HTTP_BAD_REQUEST) {
+ throw new IOException("open HTTP connection failed.");
+ }
+ }
+ int len = uc.getContentLength();
+ InputStream in = new BufferedInputStream(uc.getInputStream());
+
+ byte[] b;
+ try {
+ if (len != -1) {
+ // Read exactly len bytes from the input stream
+ b = new byte[len];
+ while (len > 0) {
+ int n = in.read(b, b.length - len, len);
+ if (n == -1) {
+ throw new IOException("unexpected EOF");
+ }
+ len -= n;
+ }
+ } else {
+ b = new byte[8192];
+ int total = 0;
+ while ((len = in.read(b, total, b.length - total)) != -1) {
+ total += len;
+ if (total >= b.length) {
+ byte[] tmp = new byte[total * 2];
+ System.arraycopy(b, 0, tmp, 0, total);
+ b = tmp;
+ }
+ }
+ // Trim array to correct size, if necessary
+ if (total != b.length) {
+ byte[] tmp = new byte[total];
+ System.arraycopy(b, 0, tmp, 0, total);
+ b = tmp;
+ }
+ }
+ } finally {
+ in.close();
+ }
+ return b;
+ }
+
+
+ protected PermissionCollection getPermissions(CodeSource codesource)
+ {
+ PermissionCollection perms = super.getPermissions(codesource);
+ perms.add(new AllPermission());
+ return perms;
+ }
+}

View file

@ -1,26 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/JSInvoke.java 1 Jan 1970 00:00:00 -0000
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/JSInvoke.java 3 Dec 2004 03:56:58 -0000 1.1
@@ -0,0 +1,21 @@
+/*
+ * @(#)JSInvoke.java 1.1 04/06/20
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.plugin.javascript.invoke;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+
+/*
+ * JavaScript to Java invocation trampoline class.
+ */
+class JSInvoke {
+ private static Object invoke(Method m, Object obj, Object[] params)
+ throws InvocationTargetException, IllegalAccessException {
+ return m.invoke(obj, params);
+ }
+}

View file

@ -1,312 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/ReflectUtil.java 1 Jan 1970 00:00:00 -0000
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/javascript/ReflectUtil.java 3 Dec 2004 03:56:58 -0000 1.1
@@ -0,0 +1,307 @@
+/*
+ * @(#)ReflectUtil.java 1.1 04/06/20
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+package sun.plugin.javascript;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.InvocationTargetException;
+import java.util.HashMap;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Iterator;
+import sun.plugin.javascript.JSClassLoader;
+
+public class ReflectUtil {
+ /*
+ * Discover the public methods on public classes
+ * and interfaces accessible to the calling
+ * JavaScript code.
+ */
+ public static Method[] getJScriptMethods(Class cls) {
+ List m = new ArrayList(); /* the valid methods we find */
+
+ /*
+ * Temporary map of method signatures when we decide
+ * that a simple call to target.getMethods() returns
+ * inaccessible methods and we must search for alternative
+ * supermethods that might be accessible. We can toss
+ * this when we're done searching.
+ */
+ Map sigs = new HashMap();
+
+ while (cls != null) {
+ boolean done = getPublicMethods(cls, m, sigs);
+ if (done) {
+ break;
+ }
+ getJScriptInterfaceMethods(cls, m, sigs);
+ cls = cls.getSuperclass();
+ }
+ return (Method[]) m.toArray(new Method[m.size()]);
+ }
+
+ /*
+ * Process the immediate interfaces of this class or interface.
+ */
+ private static void getJScriptInterfaceMethods(Class cls, List m, Map sigs) {
+ Class[] intfs = cls.getInterfaces();
+ for (int i=0; i < intfs.length; i++) {
+ Class intf = intfs[i];
+ boolean done = getPublicMethods(intf, m, sigs);
+ if (!done) {
+ getJScriptInterfaceMethods(intf, m, sigs);
+ }
+ }
+ }
+
+ /*
+ *
+ * Process the methods in this class or interface
+ */
+ private static boolean getPublicMethods(Class cls, List m, Map sigs) {
+ Method[] methods = null;
+ try {
+
+ /*
+ * This class or interface is non-public so we
+ * can't use any of it's methods. Go back and
+ * try again with a superclass or superinterface.
+ */
+ if (!Modifier.isPublic(cls.getModifiers())) {
+ return false;
+ }
+
+ if (!JSClassLoader.isPackageAccessible(cls)) {
+ return false;
+ }
+
+ methods = cls.getMethods();
+ } catch (SecurityException se) {
+ return false;
+ }
+
+ /*
+ * Check for inherited methods with non-public
+ * declaring classes. They might override and hide
+ * methods from their superclasses or
+ * superinterfaces.
+ */
+ boolean done = true;
+ for (int i=0; i < methods.length; i++) {
+ Class dc = methods[i].getDeclaringClass();
+ if (!Modifier.isPublic(dc.getModifiers())) {
+ done = false;
+ break;
+ }
+ }
+
+ /*
+ * Belatedly initialize the signature map if
+ * this is not the first time here.
+ */
+ if (sigs.isEmpty() && !m.isEmpty()) {
+ initSignatureMap(m, sigs);
+ }
+
+ if (done) {
+ /*
+ * We're done. Spray all the methods into
+ * the list and then we're out of here.
+ */
+ for (int i=0; i < methods.length; i++) {
+ addMethod(m, sigs, methods[i]);
+ }
+ } else {
+ /*
+ * Simulate cls.getDeclaredMethods() by
+ * stripping away inherited methods.
+ */
+ for (int i=0; i < methods.length; i++) {
+ Class dc = methods[i].getDeclaringClass();
+ if (cls.equals(dc)) {
+ addMethod(m, sigs, methods[i]);
+ }
+ }
+ }
+ return done;
+ }
+
+ private static void initSignatureMap(List m, Map sigs) {
+ Iterator i = m.iterator();
+ while (i.hasNext()) {
+ Method entry = (Method) i.next();
+ sigs.put(getSignature(entry), entry);
+ }
+ }
+
+ private static void addMethod(List m, Map sigs, Method method) {
+ /*
+ * Avoid work. We ignore the signature matching
+ * until the map is initialized in initSignatureMap.
+ * This has the effect of avoiding the signature
+ * work for the first call of getPublicMethods().
+ */
+ if (sigs.isEmpty()) {
+ m.add(method);
+ return;
+ }
+
+ /*
+ * Avoid adding duplicate accessible methods on
+ * the list.
+ */
+ String signature = getSignature(method);
+ if (!sigs.containsKey(signature)) {
+ m.add(method);
+ sigs.put(signature, method);
+ }
+ }
+
+ /*
+ * Return a canonical method signature for the method.
+ * We care only about the simple method name and the
+ * the number, type and order of the parameters.
+ * Exception declarations are not part of a method
+ * signature nor is the return type.
+ */
+ private static String getSignature(Method method) {
+ StringBuffer sb = new StringBuffer();
+
+ sb.append(method.getName());
+ Class[] params = method.getParameterTypes();
+ sb.append('(');
+ if (params.length > 0) {
+ sb.append(params[0].getName());
+ }
+ for (int i=1; i < params.length; i++) {
+ sb.append(',');
+ sb.append(params[i].getName());
+ }
+ sb.append(')');
+
+ return sb.toString();
+ }
+
+ /*
+ * Discover the public fields on public classes
+ * and interfaces accessible to the calling
+ * JavaScript code.
+ */
+ public static Field[] getJScriptFields(Class cls) {
+ List m = new ArrayList(); /* the valid fields we find */
+
+ /*
+ * Temporary map of field name when we decide
+ * that a simple call to target.getFields() returns
+ * inaccessible fields and we must search for alternative
+ * supermethods that might be accessible. We can toss
+ * this when we're done searching.
+ */
+ Map names = new HashMap();
+
+ while (cls != null) {
+ boolean done = getPublicFields(cls, m, names);
+ if (done) {
+ break;
+ }
+ getJScriptInterfaceFields(cls, m, names);
+ cls = cls.getSuperclass();
+ }
+ return (Field[]) m.toArray(new Field[m.size()]);
+ }
+
+ /*
+ * Process the immediate interfaces of this class or interface.
+ */
+ private static void getJScriptInterfaceFields(Class cls, List m, Map names) {
+ Class[] intfs = cls.getInterfaces();
+ for (int i=0; i < intfs.length; i++) {
+ Class intf = intfs[i];
+ boolean done = getPublicFields(intf, m, names);
+ if (!done) {
+ getJScriptInterfaceFields(intf, m, names);
+ }
+ }
+ }
+
+ /*
+ *
+ * Process the fields in this class or interface
+ */
+ private static boolean getPublicFields(Class cls, List m, Map names) {
+ Field[] fields = null;
+ try {
+
+ /*
+ * This class or interface is non-public so we
+ * can't use any of it's fields. Go back and
+ * try again with a superclass or superinterface.
+ */
+ if (!Modifier.isPublic(cls.getModifiers())) {
+ return false;
+ }
+
+ if (!JSClassLoader.isPackageAccessible(cls)) {
+ return false;
+ }
+ fields = cls.getFields();
+ } catch (SecurityException se) {
+ return false;
+ }
+
+ /*
+ * Check for inherited fields with non-public
+ * declaring classes. They might hide
+ * fields from public classes or interfaces.
+ */
+ boolean done = true;
+ for (int i=0; i < fields.length; i++) {
+ Class dc = fields[i].getDeclaringClass();
+ if (!Modifier.isPublic(dc.getModifiers())) {
+ done = false;
+ break;
+ }
+ }
+ if (done) {
+ /*
+ * We're done. Spray all the fields into
+ * the list and then we're out of here.
+ */
+ for (int i=0; i < fields.length; i++) {
+ addField(m, names, fields[i]);
+ }
+ } else {
+ /*
+ * Simulate cls.getDeclaredFields() by
+ * stripping away inherited fields.
+ */
+ for (int i=0; i < fields.length; i++) {
+ Class dc = fields[i].getDeclaringClass();
+ if (cls.equals(dc)) {
+ addField(m, names, fields[i]);
+ }
+ }
+ }
+ return done;
+ }
+
+ private static void addField(List m, Map names, Field field) {
+ /*
+ * Avoid adding duplicate accessible fields on
+ * the list.
+ */
+ String name = field.getName();
+ if (!names.containsKey(name)) {
+ m.add(field);
+ names.put(name, field);
+ }
+ }
+}
+
+

View file

@ -1,93 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/liveconnect/ReplaceMethod.java 1 Jan 1970 00:00:00 -0000
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/liveconnect/ReplaceMethod.java 3 Dec 2004 03:56:58 -0000 1.1
@@ -0,0 +1,88 @@
+/*
+ * @(#)ReplaceMethod.java 1.1 04/06/20
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+package sun.plugin.liveconnect;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import sun.plugin.javascript.JSClassLoader;
+
+public class ReplaceMethod {
+ /*
+ * Replace the inaccessible method by a suitable method on public
+ * class/interface accessible to the calling JavaScript code.
+ * Returns null if accessible method is not found.
+ */
+ static Method getJScriptMethod(Method start) {
+ Class cls = start.getDeclaringClass();
+
+ if (Modifier.isPublic(cls.getModifiers())) {
+ return start;
+ }
+
+ String name = start.getName();
+ Class[] params = start.getParameterTypes();
+
+ Method result = null;
+ while (cls != null && result == null) {
+ result = getPublicMethod(cls, name, params);
+ if (result == null) {
+ result = getJScriptInterfaceMethod(cls, name, params);
+ }
+ cls = cls.getSuperclass();
+ }
+ return result;
+ }
+
+ /*
+ * Process the immediate interfaces of this class or interface.
+ */
+ static Method getJScriptInterfaceMethod(Class cls, String name, Class[] params) {
+ Method result = null;
+ Class[] intfs = cls.getInterfaces();
+ for (int i=0; i < intfs.length && result == null; i++) {
+ Class intf = intfs[i];
+ result = getPublicMethod(intf, name, params);
+ if (result == null) {
+ result = getJScriptInterfaceMethod(intf, name, params);
+ }
+ }
+ return result;
+ }
+
+ /*
+ *
+ * Process the methods in this class or interface
+ */
+ static private Method getPublicMethod(Class cls, String name, Class[] params) {
+ try {
+ /*
+ * This class or interface is non-public so we
+ * can't use any of it's methods. Go back and
+ * try again with a superclass or superinterface.
+ */
+ if (!Modifier.isPublic(cls.getModifiers())) {
+ return null;
+ }
+
+ /*
+ * This call will fail if 'cls' is in a restricted
+ * package and we don't have permission to access
+ * it.
+ */
+ if (!JSClassLoader.isPackageAccessible(cls)) {
+ return null;
+ }
+ return cls.getMethod(name, params);
+ } catch (NoSuchMethodException nsme) {
+ return null;
+ } catch (SecurityException se) {
+ return null;
+ }
+ }
+}
+
+

View file

@ -1,351 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/liveconnect/SecureInvocation.java 22 Oct 2003 23:04:21 -0000 1.1
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/liveconnect/SecureInvocation.java 3 Dec 2004 03:56:58 -0000 1.2
@@ -1,7 +1,7 @@
/*
* @(#)SecureInvocation.java 1.21 02/08/20
*
- * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
@@ -9,7 +9,8 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
-import java.lang.reflect.Method;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
import java.lang.Thread;
import java.io.FilePermission;
import java.security.AccessControlContext;
@@ -29,7 +30,10 @@
import java.net.URL;
import java.net.MalformedURLException;
import sun.plugin.util.Trace;
-import sun.plugin.services.PlatformService;
+import sun.plugin.services.PlatformService;
+import sun.plugin.javascript.JSClassLoader;
+import sun.plugin.javascript.ReflectUtil;
+
/**
* <P> SecureInvocation is for implementating nsISecureJNI which allows
@@ -98,64 +102,64 @@
throw e;
}
}
-
- static class CallMethodThread extends Thread {
- public CallMethodThread(int handle, Class clazz, Object obj, Method method, Object[] args,
- String origin, boolean isUniversalBrowserRead,
- boolean isUniversalJavaPermission) {
- this.handle = handle;
- this.clazz = clazz;
- this.obj = obj;
- this.method = method;
- this.args = args;
- this.origin = origin;
- this.isUniversalBrowserRead = isUniversalBrowserRead;
- this.isUniversalJavaPermission = isUniversalJavaPermission;
- }
-
- public void run() {
- try {
- result = CallMethod(clazz, obj, method, args, origin, isUniversalBrowserRead, isUniversalJavaPermission);
- }
- catch(Exception e) {
- exception = e;
- }
- finally {
- PlatformService.getService().signalEvent(handle);
- }
- }
-
-
- public Object getResult() throws Exception {
- if(exception != null)
- throw exception;
- return result;
- }
-
- private Exception exception = null;
- private Object result = null;
-
- private int handle;
- private Class clazz;
- private Object obj;
- private Method method;
- private Object[] args;
- private String origin;
- private boolean isUniversalBrowserRead;
- private boolean isUniversalJavaPermission;
-
- }
-
- public static Object CallMethod(final int handle, final Class clazz, final Object obj, final Method method, final Object[] args,
- final String origin, final boolean isUniversalBrowserRead,
- final boolean isUniversalJavaPermission)
- throws Exception {
- CallMethodThread callThread = new CallMethodThread(handle, clazz, obj, method, args, origin, isUniversalBrowserRead, isUniversalJavaPermission);
- callThread.start();
- PlatformService.getService().waitEvent(handle);
- return callThread.getResult();
- }
-
+
+ static class CallMethodThread extends Thread {
+ public CallMethodThread(int handle, Class clazz, Object obj, Method method, Object[] args,
+ String origin, boolean isUniversalBrowserRead,
+ boolean isUniversalJavaPermission) {
+ this.handle = handle;
+ this.clazz = clazz;
+ this.obj = obj;
+ this.method = method;
+ this.args = args;
+ this.origin = origin;
+ this.isUniversalBrowserRead = isUniversalBrowserRead;
+ this.isUniversalJavaPermission = isUniversalJavaPermission;
+ }
+
+ public void run() {
+ try {
+ result = CallMethod(clazz, obj, method, args, origin, isUniversalBrowserRead, isUniversalJavaPermission);
+ }
+ catch(Exception e) {
+ exception = e;
+ }
+ finally {
+ PlatformService.getService().signalEvent(handle);
+ }
+ }
+
+
+ public Object getResult() throws Exception {
+ if(exception != null)
+ throw exception;
+ return result;
+ }
+
+ private Exception exception = null;
+ private Object result = null;
+
+ private int handle;
+ private Class clazz;
+ private Object obj;
+ private Method method;
+ private Object[] args;
+ private String origin;
+ private boolean isUniversalBrowserRead;
+ private boolean isUniversalJavaPermission;
+
+ }
+
+ public static Object CallMethod(final int handle, final Class clazz, final Object obj, final Method method, final Object[] args,
+ final String origin, final boolean isUniversalBrowserRead,
+ final boolean isUniversalJavaPermission)
+ throws Exception {
+ CallMethodThread callThread = new CallMethodThread(handle, clazz, obj, method, args, origin, isUniversalBrowserRead, isUniversalJavaPermission);
+ callThread.start();
+ PlatformService.getService().waitEvent(handle);
+ return callThread.getResult();
+ }
+
/**
* <P> Call a method on Java object with security context.
@@ -197,8 +201,8 @@
AccessControlContext context = new AccessControlContext(domains);
// Perform the method invocation.
- return AccessController.doPrivileged(new PrivilegedCallMethodAction(method, obj, args),
- context);
+ return AccessController.doPrivileged(new PrivilegedCallMethodAction(method,
+ obj, args), context);
} catch (Exception e) {
Trace.liveConnectPrintException(e);
throw e;
@@ -323,32 +327,6 @@
}
}
-
- /**
- * <P> Set up a protection domain according to the origin and
- * the other security related information.
- */
- private static ProtectionDomain getProtectionDomain(Class clazz,
- String origin,
- boolean byPassOrigin,
- boolean allPermission)
- throws OriginNotAllowedException, MalformedURLException
- {
- boolean trust = false;
-
- // First, check if the call is allowed
- checkLiveConnectCaller(clazz, origin, byPassOrigin);
-
- if (allPermission)
- {
- return getTrustedProtectionDomain();
- }
- else
- {
- return getDefaultProtectionDomain(origin);
- }
- }
-
/**
* <P> Check if LiveConnect call is allowed at all.
* </P>
@@ -447,7 +425,7 @@
// Obtain Java policy
Policy policy = Policy.getPolicy();
- CodeSource cs = new CodeSource(url, null);
+ CodeSource cs = new CodeSource(url, (java.security.cert.Certificate[])null);
final PermissionCollection pc = policy.getPermissions(cs);
if (url == null || url.getProtocol().equals("file")) {
@@ -516,16 +494,19 @@
PrivilegedConstructObjectAction(Constructor constructor, Object[] args)
{
- this.constructor = constructor;
- this.args = args;
+ this.constructor = constructor;
+ this.args = args;
- // Ensure the argument is not null
- if (this.args == null)
- this.args = new Object[0];
+ // Ensure the argument is not null
+ if (this.args == null)
+ this.args = new Object[0];
}
public Object run() throws Exception {
- return constructor.newInstance(args);
+ /* Check whether the caller has package access permission */
+ JSClassLoader.checkPackageAccess(constructor.getDeclaringClass());
+
+ return constructor.newInstance(args);
}
}
@@ -543,17 +524,54 @@
PrivilegedCallMethodAction(Method method, Object obj, Object[] args)
{
- this.method = method;
- this.obj = obj;
- this.args = args;
-
- // Ensure the argument is not null
- if (this.args == null)
- this.args = new Object[0];
+ this.method = method;
+
+ this.obj = obj;
+ this.args = args;
+
+ // Ensure the argument is not null
+ if (this.args == null)
+ this.args = new Object[0];
}
public Object run() throws Exception {
- return method.invoke(obj, args);
+ /*
+ * Browser uses reflection to collect methods/fields/constructors
+ * through this method call. Therefore JSClassLoader is not used
+ * in such cases. However it requires filtering to avoid exposing
+ * inaccessible methods/fields/constructors.
+ *
+ * Also, Mozilla ignores abstract methods, therefore those are
+ * replaced by the concrete class methods
+ */
+ if(obj instanceof Class) {
+ String name = method.getName();
+ Class cls = (Class)obj;
+ if(name.equals("getMethods")) {
+ Method[] methods = ReflectUtil.getJScriptMethods(cls);
+ for (int i=0; i < methods.length; i++) {
+ Method m = methods[i];
+ if (Modifier.isAbstract(m.getModifiers())) {
+ Class[] params = m.getParameterTypes();
+ methods[i] = cls.getMethod(m.getName(), params);
+ }
+ }
+ return methods;
+ }else if (name.equals("getFields")) {
+ return ReflectUtil.getJScriptFields(cls);
+ }else if (name.equals("getConstructors")) {
+ if (!Modifier.isPublic(cls.getModifiers()) ||
+ !JSClassLoader.isPackageAccessible(cls)) {
+ return new Constructor[0];
+ }
+ }
+ }
+
+ Method actualMethod = ReplaceMethod.getJScriptMethod(method);
+ if(actualMethod != null)
+ return JSClassLoader.invoke(actualMethod, obj, args);
+ else
+ throw new NoSuchMethodException(method.getName());
}
}
@@ -564,18 +582,20 @@
* </P>
*/
class PrivilegedGetFieldAction implements PrivilegedExceptionAction {
-
Field field;
Object obj;
PrivilegedGetFieldAction(Field field, Object obj)
{
- this.field = field;
- this.obj = obj;
+ this.field = field;
+ this.obj = obj;
}
- public Object run() throws Exception {
- return field.get(obj);
+ public Object run() throws Exception {
+ /* Check whether the caller has package access permission */
+ JSClassLoader.checkPackageAccess(field.getDeclaringClass());
+
+ return field.get(obj);
}
}
@@ -593,15 +613,18 @@
PrivilegedSetFieldAction(Field field, Object obj, Object val)
{
- this.field = field;
- this.obj = obj;
- this.val = val;
+ this.field = field;
+ this.obj = obj;
+ this.val = val;
}
public Object run() throws Exception {
- field.set(obj, val);
+ /* Check whether the caller has package access permission */
+ JSClassLoader.checkPackageAccess(field.getDeclaringClass());
+
+ field.set(obj, val);
return null;
}
}
-
-
+
+

View file

@ -1,16 +0,0 @@
$FreeBSD$
--- ../../deploy/src/javaws/src/share/native/util.c 22 Oct 2003 23:04:17 -0000 1.1.1.1
+++ ../../deploy/src/javaws/src/share/native/util.c 16 Jan 2004 23:50:11 -0000
@@ -27,7 +27,10 @@
/* Find size of file */
struct stat statBuf;
- stat(filename, &statBuf);
+ if (stat(filename, &statBuf) == -1) {
+ *buffer = NULL;
+ return 0;
+ }
size = statBuf.st_size;
/* Allocate memory for contents */

View file

@ -1,11 +0,0 @@
--- ../../deploy/src/plugin/oji-plugin/include/solaris/navig4/nspr/md/_pth.h 22 Oct 2003 23:04:19 -0000 1.1.1.1
+++ ../../deploy/src/plugin/oji-plugin/include/solaris/navig4/nspr/md/_pth.h 21 Oct 2004 05:47:13 -0000
@@ -52,7 +52,7 @@
#define PTHREAD_MUTEXATTR_INIT pthread_mutexattr_init
#define PTHREAD_MUTEXATTR_DESTROY pthread_mutexattr_destroy
#define PTHREAD_MUTEX_INIT(m, a) pthread_mutex_init(&(m), &(a))
-#define PTHREAD_MUTEX_IS_LOCKED(m) (EBUSY == pthread_mutex_trylock(&(m)))
+#define PTHREAD_MUTEX_IS_LOCKED(m) (0 != pthread_mutex_trylock(&(m)))
#define PTHREAD_CONDATTR_INIT pthread_condattr_init
#define PTHREAD_CONDATTR_DESTROY pthread_condattr_destroy
#define PTHREAD_COND_INIT(m, a) pthread_cond_init(&(m), &(a))

View file

@ -1,331 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/com/DispatchImpl.java 22 Oct 2003 23:04:20 -0000 1.1
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/com/DispatchImpl.java 3 Dec 2004 03:56:58 -0000 1.2
@@ -1,7 +1,7 @@
/*
- * @(#)DispatchImpl.java 1.6 03/01/23
+ * @(#)DispatchImpl.java 1.16 04/06/20
*
- * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
@@ -9,8 +9,32 @@
import sun.plugin.util.Trace;
import sun.plugin.javascript.ocx.JSObject;
-import java.applet.Applet;
+import sun.plugin.liveconnect.JavaScriptProtectionDomain;
import sun.plugin.viewer.context.IExplorerAppletContext;
+import sun.plugin.security.PluginClassLoader;
+import java.applet.Applet;
+import java.net.URL;
+import java.net.MalformedURLException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.net.SocketPermission;
+import java.io.FilePermission;
+import java.io.File;
+import java.security.AccessControlContext;
+import java.security.AccessController;
+import java.security.CodeSource;
+import java.security.Policy;
+import java.security.ProtectionDomain;
+import java.security.AllPermission;
+import java.security.Permissions;
+import java.security.Permission;
+import java.security.PermissionCollection;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
+import java.security.AccessControlException;
+import java.security.PrivilegedActionException;
+import sun.net.www.ParseUtil;
+import sun.security.util.SecurityConstants;
/**
* DispatchImpl encapsulates a Java Object and provides Dispatch interface
@@ -22,14 +46,19 @@
{
JavaClass targetClass = null;
Object targetObj = null;
+ int handle = 0;
+ int wndHandle = 0;
+ AccessControlContext context = null;
+ boolean isBridge = false;
/*
* Constructor
* @param obj the object to be wrapped
*/
- public DispatchImpl(Object obj)
+ public DispatchImpl(Object obj, int id)
{
targetObj = obj;
+ handle = id;
}
/**
@@ -40,19 +69,87 @@
* @param params Arguments.
* @return Java object.
*/
- public Object invoke(int flag, int index, Object []params)
+ public Object invoke(final int flag, final int index, final Object []params)
+ throws Exception
+ {
+ try {
+ //No security constraints in case of ActiveX bridge application
+ if(isBridge)
+ return invokeImpl(flag, index, params);
+
+ if(context == null) {
+ context = createContext();
+ }
+
+ // Invoke the method within the applet sand box security restricitions
+ return AccessController.doPrivileged(
+ new PrivilegedExceptionAction() {
+ public Object run() throws Exception{
+ return invokeImpl(flag, index, params);
+ }
+ }, context
+ );
+ }catch(Exception exc) {
+ Throwable cause = exc.getCause();
+ if(cause == null) {
+ cause = exc;
+ }
+
+ Trace.liveConnectPrintException(cause);
+ throw new Exception(cause.toString());
+ }
+ }
+
+ public AccessControlContext createContext() {
+ try {
+ ProtectionDomain[] domains = new ProtectionDomain[1];
+ //Obtain the java code origin
+ ProtectionDomain pd = (ProtectionDomain)AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return targetObj.getClass().getProtectionDomain();
+ }
+ });
+
+ CodeSource cs = null;
+ URL url = null;
+ if(pd != null)
+ cs = pd.getCodeSource();
+ if(cs != null)
+ url = cs.getLocation();
+
+ domains[0] = getJSProtectionDomain(url, targetObj.getClass());
+ return new AccessControlContext(domains);
+ }catch(Exception exc) {
+ Trace.liveConnectPrintException(exc);
+ }
+
+ return null;
+ }
+
+ /**
+ * Invoke a method according to the method index.
+ *
+ * @param flag Invoke flag
+ * @param index Method index
+ * @param params Arguments.
+ * @return Java object.
+ */
+ public Object invokeImpl(int flag, int index, Object []params)
throws Exception
{
Object retObj = null;
Dispatcher disp = null;
try {
- convertParams(params);
+ if(params != null)
+ convertParams(params);
disp = targetClass.getDispatcher(flag, index, params);
- return disp.invoke(targetObj, params);
- }
- catch (Throwable e)
- {
- //e.printStackTrace();
+ if(disp != null) {
+ retObj = disp.invoke(targetObj, params);
+ if(retObj != null)
+ retObj = Utils.convertReturn(disp.getReturnType(), retObj, handle);
+ }
+ return retObj;
+ } catch (Throwable e) {
Throwable cause = e.getCause();
if(cause == null) {
cause = e;
@@ -82,11 +179,39 @@
return targetClass;
}
+ public int getReturnType(int id){
+ return targetClass.getReturnType(id);
+ }
+
+ public int getIdForName(final String name) throws Exception{
+ try {
+ //No security constraints in case of ActiveX bridge application
+ if(isBridge)
+ return getIdForNameImpl(name);
+
+ if(context == null) {
+ context = createContext();
+ }
+
+ // Invoke the method within the applet sand box security restricitions
+ Integer retVal = (Integer)AccessController.doPrivileged(
+ new PrivilegedExceptionAction() {
+ public Object run() throws Exception{
+ return new Integer(getIdForNameImpl(name));
+ }
+ }, context
+ );
+ return retVal.intValue();
+ }catch(PrivilegedActionException pe) {
+ }
+
+ return -1;
+ }
/*
*
*/
- public int getIdForName(String name) throws Exception{
+ public int getIdForNameImpl(String name) throws Exception{
int id = -1;
if(targetClass == null && targetObj != null) {
@@ -103,27 +228,122 @@
}
/*
- *
+ * Unwraps the wrapped java object arguments
*/
private void convertParams(Object []params) {
for(int i=0;i<params.length;i++) {
if(params[i] != null && params[i] instanceof DispatchImpl) {
params[i] = ((DispatchImpl)params[i]).getWrappedObject();
} else if(params[i] != null && params[i] instanceof DispatchClient){
- JSObject jsObj = new JSObject((DispatchClient)params[i]);
- jsObj.setIExplorerAppletContext((IExplorerAppletContext)
+ JSObject jsObj = null;
+ if (!isBridge) {
+ jsObj = new JSObject((DispatchClient)params[i]);
+ jsObj.setIExplorerAppletContext((IExplorerAppletContext)
((Applet)targetObj).getAppletContext());
+ } else {
+ jsObj = new JSObject((DispatchClient)params[i], handle);
+ }
params[i] = jsObj;
}
}
}
+ /**
+ * Returns a protection domain that represents the default permission
+ * for a given URL.
+ *
+ * @param urlString URL
+ * @return protection domain.
+ */
+ public static ProtectionDomain getJSProtectionDomain(URL url, Class clazz)
+ throws MalformedURLException {
+
+ // Obtain default java applet policy
+ Policy policy = (Policy)AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return Policy.getPolicy();
+ }
+ });
+
+ CodeSource cs = new CodeSource(null, (java.security.cert.Certificate[])null);
+ final PermissionCollection pc = policy.getPermissions(cs);
+ if(url != null) {
+ Permission p;
+ String path = null;
+ try {
+ p = url.openConnection().getPermission();
+ } catch (java.io.IOException ioe) {
+ p = null;
+ }
+
+ if (p instanceof FilePermission) {
+ path = p.getName();
+ } else if ((p == null) && (url.getProtocol().equals("file"))) {
+ path = url.getFile().replace('/', File.separatorChar);
+ path = ParseUtil.decode(path);
+ } else if (p instanceof SocketPermission) {
+ /*
+ Socket permission to connect back to the host
+ */
+ String host = url.getHost();
+ pc.add(new SocketPermission(host,
+ SecurityConstants.SOCKET_CONNECT_ACCEPT_ACTION));
+ }
+
+ if(path != null &&
+ (clazz.getClassLoader() instanceof PluginClassLoader)) {
+ //We need to add an additional permission to read recursively
+ if (path.endsWith(File.separator)) {
+ path += "-";
+ } else {
+ int endIndex = path.lastIndexOf(File.separatorChar);
+ if (endIndex != -1)
+ path = path.substring(0, endIndex+1) + "-";
+ }
+
+ pc.add(new FilePermission(path, SecurityConstants.FILE_READ_ACTION));
+
+ /*
+ Socket permission to connect back to the "localhost"
+ */
+ pc.add(new SocketPermission("localhost",
+ SecurityConstants.SOCKET_CONNECT_ACCEPT_ACTION));
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ try {
+ String host = InetAddress.getLocalHost().getHostName();
+ pc.add(new SocketPermission(host,
+ SecurityConstants.SOCKET_CONNECT_ACCEPT_ACTION));
+ } catch (UnknownHostException uhe) {
+ }
+ return null;
+ }
+ });
+ }
+ }
+
+ return new JavaScriptProtectionDomain(pc);
+ }
+
public String toString() {
if(targetObj != null) {
return targetObj.toString();
}
return null;
}
+
+ public int getWindowHandle() {
+ if(wndHandle == 0) {
+ wndHandle = getWindowHandle(handle);
+ }
+ return wndHandle;
+ }
+
+ protected void setBridge() {
+ isBridge = true;
+ }
+
+ native int getWindowHandle(int id);
}

View file

@ -1,22 +0,0 @@
$FreeBSD$
--- ../../deploy/make/plugin/java/FileList.gmk 7 Nov 2003 12:15:52 -0000 1.2
+++ ../../deploy/make/plugin/java/FileList.gmk 3 Dec 2004 03:56:58 -0000 1.3
@@ -86,6 +86,9 @@
\
sun/plugin/javascript/JSObject.java \
sun/plugin/javascript/JSContext.java \
+ sun/plugin/javascript/JSClassLoader.java \
+ sun/plugin/javascript/ReflectUtil.java \
+ sun/plugin/javascript/JSInvoke.java \
\
sun/plugin/javascript/navig/Navigator.java \
sun/plugin/javascript/navig/Document.java \
@@ -125,6 +128,7 @@
sun/plugin/liveconnect/JavaScriptPermission.java \
sun/plugin/liveconnect/SecurityContextHelper.java \
sun/plugin/liveconnect/LiveConnect.java \
+ sun/plugin/liveconnect/ReplaceMethod.java \
\
sun/plugin/extension/ExtensionInstallationImpl.java \
sun/plugin/extension/ExtensionInstaller.java \

View file

@ -1,41 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/src/share/classes/sun/plugin/com/MethodDispatcher.java 22 Oct 2003 23:04:20 -0000 1.1
+++ ../../deploy/src/plugin/src/share/classes/sun/plugin/com/MethodDispatcher.java 3 Dec 2004 03:56:58 -0000 1.2
@@ -1,7 +1,7 @@
/*
- * @(#)MethodDispatcher.java 1.5 03/01/23
+ * @(#)MethodDispatcher.java 1.10 04/06/20
*
- * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
@@ -9,6 +9,7 @@
import java.lang.reflect.Method;
import sun.plugin.util.Trace;
+import sun.plugin.javascript.JSClassLoader;
/**
* A <code>MethodDispatcher</code> provides information about,
@@ -47,11 +48,16 @@
Object retObj = null;
if(method != null && obj != null) {
Trace.msgLiveConnectPrintln("com.method.invoke", new Object[] {method});
+ Class theClass = obj.getClass();
Object[] params = TypeConverter.convertObjectArray(
method.getParameterTypes(), args);
- retObj = Utils.convertReturn( method.getReturnType(),
- method.invoke(obj, params ));
+ // check if the class is private and the method is public
+ retObj = JSClassLoader.invoke(method, obj, params);
}
return retObj;
+ }
+
+ public Class getReturnType() {
+ return method.getReturnType();
}
}

View file

@ -1,13 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns600/nscore.h.orig Fri Jul 30 18:00:04 2004
+++ ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns600/nscore.h Fri Jul 30 23:32:31 2004
@@ -163,7 +163,7 @@
*/
/* under Metrowerks (Mac), we don't have autoconf yet */
-#ifdef __MWERKS__
+#if defined(__MWERKS__) || defined(NS_UNIX)
#define HAVE_CPP_SPECIALIZATION
#define HAVE_CPP_PARTIAL_SPECIALIZATION
#define HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX

View file

@ -1,13 +0,0 @@
$FreeBSD$
--- ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns610/nscore.h.orig Fri Jul 30 18:00:05 2004
+++ ../../deploy/src/plugin/oji-plugin/include/mozilla_headers_ns610/nscore.h Fri Jul 30 23:23:36 2004
@@ -163,7 +163,7 @@
*/
/* under Metrowerks (Mac), we don't have autoconf yet */
-#ifdef __MWERKS__
+#if defined(__MWERKS__) || defined(NS_UNIX)
#define HAVE_CPP_SPECIALIZATION
#define HAVE_CPP_PARTIAL_SPECIALIZATION
#define HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX

View file

@ -1,13 +0,0 @@
$FreeBSD$
--- ../../hotspot/src/os/bsd/vm/os_bsd.hpp.orig Wed Oct 20 16:01:08 2004
+++ ../../hotspot/src/os/bsd/vm/os_bsd.hpp Wed Oct 20 16:01:30 2004
@@ -353,7 +353,7 @@
bool trylock() {
verify();
int status = pthread_mutex_trylock(_mutex);
- if (status == EBUSY)
+ if (status == EBUSY || status == EDEADLK)
return false;
assert(status == 0, "pthread_mutex_trylock");
#ifndef PRODUCT

View file

@ -893,6 +893,7 @@ jdk%%JDK_VERSION%%/jre/Welcome.html
%%MINIMAL:%%jdk%%JDK_VERSION%%/jre/bin/ControlPanel
jdk%%JDK_VERSION%%/jre/bin/java
%%MINIMAL:%%jdk%%JDK_VERSION%%/jre/bin/java_vm
%%MINIMAL:%%%%DEBUG:%%jdk%%JDK_VERSION%%/jre/bin/java_vm_g
jdk%%JDK_VERSION%%/jre/bin/keytool
jdk%%JDK_VERSION%%/jre/bin/kinit
jdk%%JDK_VERSION%%/jre/bin/klist
@ -980,6 +981,7 @@ jdk%%JDK_VERSION%%/jre/lib/i386/libioser12.so
jdk%%JDK_VERSION%%/jre/lib/i386/libjaas_unix.so
jdk%%JDK_VERSION%%/jre/lib/i386/libjava.so
%%MINIMAL:%%jdk%%JDK_VERSION%%/jre/lib/i386/libjavaplugin_jni.so
%%MINIMAL:%%%%DEBUG:%%jdk%%JDK_VERSION%%/jre/lib/i386/libjavaplugin_jni_g.so
jdk%%JDK_VERSION%%/jre/lib/i386/libjawt.so
jdk%%JDK_VERSION%%/jre/lib/i386/libjcov.so
jdk%%JDK_VERSION%%/jre/lib/i386/libjdwp.so