re PR libgcj/17784 (Thread.interrupt doesn't do security checks)
authorMichael Koch <konqueror@gmx.de>
Thu, 13 Jan 2005 20:26:38 +0000 (20:26 +0000)
committerMichael Koch <mkoch@gcc.gnu.org>
Thu, 13 Jan 2005 20:26:38 +0000 (20:26 +0000)
2005-01-13  Michael Koch  <konqueror@gmx.de>

PR libgcj/17784
* java/lang/Thread.java
(Thread): Call checkAccess().
(stop): Fixed argument name to match javadoc.
* java/lang/natThread.cc
(interrupt): Call checkAccess().
(stop): Likewise.

From-SVN: r93611

libjava/ChangeLog
libjava/java/lang/Thread.java
libjava/java/lang/natThread.cc

index 918f99f087d0b53d19ea284aaa103f808bebaae5..151ee6525542b19a4d2609ca90e4ed0c07a7326f 100644 (file)
@@ -1,3 +1,13 @@
+2005-01-13  Michael Koch  <konqueror@gmx.de>
+
+       PR libgcj/17784
+       * java/lang/Thread.java
+       (Thread): Call checkAccess().
+       (stop): Fixed argument name to match javadoc.
+       * java/lang/natThread.cc
+       (interrupt): Call checkAccess().
+       (stop): Likewise.
+
 2005-01-11  Michael Koch  <konqueror@gmx.de>
 
        PR libgcj/13972
index 5f3940f84622490ee7ba73f209ce4ebc3d5ca28a..ef4a3f472f0f92a84a5c12d05277c92e8ccdd1e1 100644 (file)
@@ -1,5 +1,5 @@
 /* Thread -- an independent thread of executable code
-   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
    Free Software Foundation
 
 This file is part of GNU Classpath.
@@ -36,6 +36,7 @@ this exception to your version of the library, but you are not
 obligated to do so.  If you do not wish to do so, delete this
 exception statement from your version. */
 
+
 package java.lang;
 
 import gnu.gcj.RawData;
@@ -321,6 +322,9 @@ public class Thread implements Runnable
 
   private Thread (Thread current, ThreadGroup g, Runnable r, String n)
   {
+    // Make sure the current thread may create a new thread.
+    checkAccess();
+    
     // The Class Libraries book says ``threadName cannot be null''.  I
     // take this to mean NullPointerException.
     if (n == null)
@@ -862,7 +866,7 @@ public class Thread implements Runnable
    * @see SecurityManager#checkPermission(Permission)
    * @deprecated unsafe operation, try not to use
    */
-  public final native void stop(Throwable e);
+  public final native void stop(Throwable t);
 
   /**
    * Suspend this Thread.  It will not come back, ever, unless it is resumed.
index 4782115d2cfedb6c1d7f0682bc58ec760799575c..af33b0db353e2920395324f7f8b985f9f8371387 100644 (file)
@@ -112,6 +112,7 @@ java::lang::Thread::holdsLock (jobject obj)
 void
 java::lang::Thread::interrupt (void)
 {
+  checkAccess ();
   natThread *nt = (natThread *) data;
   _Jv_ThreadInterrupt (nt->thread);
 }
@@ -321,6 +322,7 @@ java::lang::Thread::start (void)
 void
 java::lang::Thread::stop (java::lang::Throwable *)
 {
+  checkAccess ();
   throw new UnsupportedOperationException
     (JvNewStringLatin1 ("Thread.stop unimplemented"));
 }