https://issues.apache.org/bugzilla/show_bug.cgi?id=53830

          Priority: P2
            Bug ID: 53830
          Assignee: dev@tomcat.apache.org
           Summary: Better handling of Manager.randomFile default value on
                    Windows
          Severity: normal
    Classification: Unclassified
                OS: Windows XP
          Reporter: knst.koli...@gmail.com
          Hardware: PC
            Status: NEW
           Version: 6.0.35
         Component: Catalina
           Product: Tomcat 6

See the following thread on the users list:
"Windows Path Not Found for urandom", started on Aug 28, 2012
http://markmail.org/thread/l3f3meujmac2jzqp
http://marc.info/?t=134616742400004&r=1&w=2

This issue is specific to Tomcat 6 and earlier.
In Tomcat 7 the session id generation was reimplemented and this feature was
removed.

The default value of o.a.c.session.ManagerBase.devRandomSource is
"/dev/urandom".

1) The value is unsuitable for Windows, where the file does not exist.

I think it would be better to statically test the value once:
- File.isAbsolute(), to avoid looking for "C:\dev\urandom"
- File.exists()

2) On each call to ManagerBase.getRandomBytes(..) it tries to reopen the file
by calling setRandomFile(..).

There is try/catch(IOException) that clears the name and prevents subsequent
attempts to open the file, but it does not happen in case of simple
if(!f.exists()) return.

Stacktrace (from the mail thread, see details there):
[[[
Aug 29, 2012 11:52:29 AM org.apache.catalina.session.ManagerBase setRandomFile
WARNING: Error reading /dev/urandom
java.io.EOFException
        at java.io.DataInputStream.readFully(DataInputStream.java:180)
        at java.io.DataInputStream.readLong(DataInputStream.java:399)
        at
org.apache.catalina.session.ManagerBase.setRandomFile(ManagerBase.java:548)
        at
org.apache.catalina.session.ManagerBase.getRandomBytes(ManagerBase.java:993)
        at org.apache.catalina.session.ManagerBase.init(ManagerBase.java:767)
        at
org.apache.catalina.session.StandardManager.start(StandardManager.java:630)
        at
org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:446)
        at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4631)
        at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
        at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
        at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
        at
org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)
        at
org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)
        at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
        at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
        at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
        at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
        at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
        at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
        at
org.apache.catalina.core.StandardService.start(StandardService.java:525)
        at
org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
]]]

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to