Another missing security check reported in PR42390:

2010-12-25  Andrew John Hughes  <ahug...@redhat.com>

        PR classpath/42390
        * java/util/logging/LogManager.java:
        (addPropertyChangeListener(PropertyChangeListener)):
        Document fully.  Throw NPE in a clearer way.  Add
        SecurityException.
        (removePropertyChangeListener(PropertyChangeListener)):
        Document fully. Add SecurityException.
-- 
Andrew :)

Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)

Support Free Java!
Contribute to GNU Classpath and IcedTea
http://www.gnu.org/software/classpath
http://icedtea.classpath.org
PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint = F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8
Index: java/util/logging/LogManager.java
===================================================================
RCS file: /sources/classpath/classpath/java/util/logging/LogManager.java,v
retrieving revision 1.29
diff -u -u -r1.29 LogManager.java
--- java/util/logging/LogManager.java   3 Jun 2010 19:13:14 -0000       1.29
+++ java/util/logging/LogManager.java   25 Dec 2010 17:29:19 -0000
@@ -211,11 +211,21 @@
   /**
    * Registers a listener which will be notified when the
    * logging properties are re-read.
+   *
+   * @param listener the event listener to register.
+   * @throws NullPointerException if the listener is {...@code null}.
+   * @throws SecurityException if a security manager exists and the
+   *                           calling code does not have the permission
+   *                           {...@code LoggingPermission("control")}.
    */
   public synchronized void addPropertyChangeListener(PropertyChangeListener 
listener)
   {
-    /* do not register null. */
-    listener.getClass();
+    if (listener == null)
+      throw new NullPointerException("Attempt to add null property change 
listener");
+
+    SecurityManager sm = System.getSecurityManager();
+    if (sm != null)
+      sm.checkPermission(new LoggingPermission("control", null));
 
     pcs.addPropertyChangeListener(listener);
   }
@@ -226,11 +236,22 @@
    * If <code>listener</code> has not been registered previously,
    * nothing happens.  Also, no exception is thrown if
    * <code>listener</code> is <code>null</code>.
+   *
+   * @param listener the listener to remove.
+   * @throws SecurityException if a security manager exists and the
+   *                           calling code does not have the permission
+   *                           {...@code LoggingPermission("control")}.
    */
   public synchronized void removePropertyChangeListener(PropertyChangeListener 
listener)
   {
     if (listener != null)
-      pcs.removePropertyChangeListener(listener);
+      {
+        SecurityManager sm = System.getSecurityManager();
+        if (sm != null)
+          sm.checkPermission(new LoggingPermission("control", null));
+
+        pcs.removePropertyChangeListener(listener);
+      }
   }
 
   /**

Reply via email to