From e70324625fde7ca3a89e57cc56eaaaea3c005dc2 Mon Sep 17 00:00:00 2001 From: Michael Koch Date: Thu, 13 Jan 2005 20:26:38 +0000 Subject: [PATCH] re PR libgcj/17784 (Thread.interrupt doesn't do security checks) 2005-01-13 Michael Koch 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 | 10 ++++++++++ libjava/java/lang/Thread.java | 8 ++++++-- libjava/java/lang/natThread.cc | 2 ++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 918f99f..151ee65 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,13 @@ +2005-01-13 Michael Koch + + 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 PR libgcj/13972 diff --git a/libjava/java/lang/Thread.java b/libjava/java/lang/Thread.java index 5f3940f..ef4a3f4 100644 --- a/libjava/java/lang/Thread.java +++ b/libjava/java/lang/Thread.java @@ -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. diff --git a/libjava/java/lang/natThread.cc b/libjava/java/lang/natThread.cc index 4782115..af33b0d 100644 --- a/libjava/java/lang/natThread.cc +++ b/libjava/java/lang/natThread.cc @@ -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")); } -- 2.7.4