DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=28874>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=28874

Execute class has buggy patchEnvironment() implementation

           Summary: Execute class has buggy patchEnvironment()
                    implementation
           Product: Ant
           Version: 1.5.4
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Major
          Priority: Other
         Component: Core
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


When trying to extend an environment for a forked VM for example, it is 
possible to specify modified environment variables, such as pre-pending 
something to the PATH for example.  The modified environment is worked out 
within the Execute class' patchEnvironment() method which has two fundamental 
problems which could cause things to go subtly wrong.

1.  It does case sensitive matching of environment variable keys on all 
platforms.  This should not be the case on Windows.  Our XP machines use "Path" 
for the PATH environment variable, however this is not necessarily guaranteed.  
Personally I suggest to extend the <env> element with an optional boolean 
attribute to specify whether the environment variable is case sensitive or not.

2.  Looking at the patchEnvironment() implementation, it matches keys by using 
string.startsWith() which means that PATH_CAT also matches PATH substring.  
This could dangerously cause some environment variables to be dropped off your 
forked process leading to all sorts of potential problems.  Keys should be 
matched for exact length match as well as contents, and also check case 
insestive matches according to the platform or possibly some user specification.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to