This is a security hole.  The daemon should _not_ simply run a runnable that is passed to it; rather, it should invoke a specific, hardcoded method.  For example, remove the parameter in this method and call an initializationCompletion() method within the InitializationFilter.

As it stands, anyone can create a runnable by creating an instance of InitializationCompletion & overriding run, send it to this method, and run there unauthorized as super user (daemon).

Daemon should never take a runnable as a parameter and simply run whatever it is passed on a daemon thread.  This creates an effective runAsSuperUser(Runnable) method that bypasses any kind of security.