Bug 54054

Summary: 2 CGIServlet's with different Parameter passShellEnvironment
Product: Tomcat 6 Reporter: Claus Rieber <claus.rieber>
Component: CatalinaAssignee: Tomcat Developers Mailing List <dev>
Status: RESOLVED FIXED    
Severity: normal    
Priority: P2    
Version: 6.0.36   
Target Milestone: default   
Hardware: PC   
OS: Linux   
Attachments: 2 webapps test1/test2.

Description Claus Rieber 2012-10-26 07:24:33 UTC
Created attachment 29511 [details]
2 webapps test1/test2.

I'm running Tomcat 6.0.36 with Java 1.6.0_32 on Ubuntu 12.04 (64 Bit).

I have 2 webapps test1 and test2 which use CGI with CGIServlet.
The difference between test1 and test2 is the Parameter passShellEnvironment.
test1 sets it to true, test2 to false.
When I call .../cgi-bin/getenv.pl, both apps show the complete environment.
I searched the source of CGIServlet and found, that there is a static 
Hashtable: 
static Hashtable<String,String> shellEnv = new Hashtable<String,String>();

So test1 sets this Hashtable and test2 has it too.
I suggest to remove the static.
Then only test1 has the environment.

In Tomcat 7.0.32 the problem is the same.
Comment 1 Mark Thomas 2012-10-26 20:04:30 UTC
Marking as a bug rather than an enhancement.

Fixed in trunk and 7.0.x and will be in 7.0.33 onwards.

Proposed for 6.0.x.
Comment 2 Konstantin Kolinko 2012-12-06 13:48:23 UTC
Fixed in 6.0 with r1417882 , will be in 6.0.37 onwards.