[ecj] Fix VM startup with security manager enabled

Gary Benson gbenson@redhat.com
Fri Dec 1 16:57:00 GMT 2006


Hi all,

This commit fixes VM startup when a security manager is enabled,
which I broke with my previous commit.

Cheers,
Gary
-------------- next part --------------
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 119399)
+++ ChangeLog	(working copy)
@@ -1,3 +1,13 @@
+2006-12-01  Gary Benson  <gbenson@redhat.com>
+
+	* java/net/URLClassLoader.java
+	(findClass): Inhibit calling this.toString() further into VM
+	initialization.
+	(runtimeInitialized): Removed.
+	* java/net/natURLClassLoader.cc: Removed.
+	* Makefile.am: Reflect the above.
+	* Makefile.in: Rebuilt.	
+
 2006-11-30  Tom Tromey  <tromey@redhat.com>
 
 	* java/lang/Class.java (getAnnotations): Don't recurse.
Index: java/net/URLClassLoader.java
===================================================================
--- java/net/URLClassLoader.java	(revision 119399)
+++ java/net/URLClassLoader.java	(working copy)
@@ -1080,7 +1080,10 @@
     if (resource == null)
       {
 	String message = className + " not found";
-	if (runtimeInitialized())
+	// Calling this.toString() during VM startup when a
+	// security manager is in force causes the stack to
+	// be unwound before it can properly be decoded.
+	if (Thread.currentThread() != null)
 	  message += " in " + this;
 	throw new ClassNotFoundException(message);
       }
@@ -1442,11 +1445,4 @@
         return loader;
       }
   }
-
-  /**
-   * Tell whether runtime initialization is complete.
-   *
-   * @return whether runtime initialization is complete.
-   */
-  private static native boolean runtimeInitialized();  
 }
Index: java/net/natURLClassLoader.cc
===================================================================
--- java/net/natURLClassLoader.cc	(revision 119399)
+++ java/net/natURLClassLoader.cc	(working copy)
@@ -1,22 +0,0 @@
-// natURLClassLoader.cc -- Native part of the URLClassLoader class.
-
-/* Copyright (C) 2006 Free Software Foundation, Inc.
-
-   This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
-
-#include <config.h>
-
-#include <gcj/cni.h>
-#include <jvm.h>
-
-#include <java/net/URLClassLoader.h>
-
-jboolean
-java::net::URLClassLoader::runtimeInitialized ()
-{
-  return gcj::runtimeInitialized;
-}
Index: Makefile.am
===================================================================
--- Makefile.am	(revision 119399)
+++ Makefile.am	(working copy)
@@ -782,7 +782,6 @@
 java/lang/reflect/natField.cc \
 java/lang/reflect/natMethod.cc \
 java/net/natVMInetAddress.cc \
-java/net/natURLClassLoader.cc \
 java/net/natVMNetworkInterface.cc \
 java/net/natVMURLConnection.cc \
 java/nio/channels/natVMChannels.cc \
Index: Makefile.in
===================================================================
--- Makefile.in	(revision 119399)
+++ Makefile.in	(working copy)
@@ -311,8 +311,7 @@
 	java/lang/ref/natReference.cc java/lang/reflect/natArray.cc \
 	java/lang/reflect/natConstructor.cc \
 	java/lang/reflect/natField.cc java/lang/reflect/natMethod.cc \
-	java/net/natVMInetAddress.cc java/net/natURLClassLoader.cc \
-	java/net/natVMNetworkInterface.cc \
+	java/net/natVMInetAddress.cc java/net/natVMNetworkInterface.cc \
 	java/net/natVMURLConnection.cc \
 	java/nio/channels/natVMChannels.cc \
 	java/nio/natDirectByteBufferImpl.cc \
@@ -375,8 +374,7 @@
 	java/lang/ref/natReference.lo java/lang/reflect/natArray.lo \
 	java/lang/reflect/natConstructor.lo \
 	java/lang/reflect/natField.lo java/lang/reflect/natMethod.lo \
-	java/net/natVMInetAddress.lo java/net/natURLClassLoader.lo \
-	java/net/natVMNetworkInterface.lo \
+	java/net/natVMInetAddress.lo java/net/natVMNetworkInterface.lo \
 	java/net/natVMURLConnection.lo \
 	java/nio/channels/natVMChannels.lo \
 	java/nio/natDirectByteBufferImpl.lo \
@@ -7645,7 +7643,6 @@
 java/lang/reflect/natField.cc \
 java/lang/reflect/natMethod.cc \
 java/net/natVMInetAddress.cc \
-java/net/natURLClassLoader.cc \
 java/net/natVMNetworkInterface.cc \
 java/net/natVMURLConnection.cc \
 java/nio/channels/natVMChannels.cc \
@@ -8178,8 +8175,6 @@
 	@: > java/net/$(DEPDIR)/$(am__dirstamp)
 java/net/natVMInetAddress.lo: java/net/$(am__dirstamp) \
 	java/net/$(DEPDIR)/$(am__dirstamp)
-java/net/natURLClassLoader.lo: java/net/$(am__dirstamp) \
-	java/net/$(DEPDIR)/$(am__dirstamp)
 java/net/natVMNetworkInterface.lo: java/net/$(am__dirstamp) \
 	java/net/$(DEPDIR)/$(am__dirstamp)
 java/net/natVMURLConnection.lo: java/net/$(am__dirstamp) \
@@ -8577,8 +8572,6 @@
 	-rm -f java/lang/reflect/natField.lo
 	-rm -f java/lang/reflect/natMethod.$(OBJEXT)
 	-rm -f java/lang/reflect/natMethod.lo
-	-rm -f java/net/natURLClassLoader.$(OBJEXT)
-	-rm -f java/net/natURLClassLoader.lo
 	-rm -f java/net/natVMInetAddress.$(OBJEXT)
 	-rm -f java/net/natVMInetAddress.lo
 	-rm -f java/net/natVMNetworkInterface.$(OBJEXT)
@@ -8724,7 +8717,6 @@
 @AMDEP_TRUE@@am__include@ @am__quote@java/lang/reflect/$(DEPDIR)/natConstructor.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@java/lang/reflect/$(DEPDIR)/natField.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@java/lang/reflect/$(DEPDIR)/natMethod.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@java/net/$(DEPDIR)/natURLClassLoader.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@java/net/$(DEPDIR)/natVMInetAddress.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@java/net/$(DEPDIR)/natVMNetworkInterface.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@java/net/$(DEPDIR)/natVMURLConnection.Plo@am__quote@


More information about the Java-patches mailing list