Uwe Schindler created SOLR-8877:
-----------------------------------

             Summary: SolrCLI.java and corresponding test does not work with 
whitespace in path
                 Key: SOLR-8877
                 URL: https://issues.apache.org/jira/browse/SOLR-8877
             Project: Solr
          Issue Type: Bug
          Components: scripts and tools
    Affects Versions: 5.5, 6.0
            Reporter: Uwe Schindler


The SolrCLI and the corresponding test use CommandLine.parse() of commons-exec, 
but in most cases the parameters are not correctly escaped.

CommandLine.parse() should be placed on forbidden-apis list. This is *not* a 
valid way to build a command line and execute it. The correct war is to create 
an instance of the CommandLine class and then add the arguments one-by one:

{code:java}
      org.apache.commons.exec.CommandLine startCmd = new 
org.apache.commons.exec.CommandLine(callScript);
      startCmd.addArguments(new String[] {
          "start",
          callScript,
          "-p",
          Integer.toString(port),
          "-s",
          solrHome,
          hostArg,
          zkHostArg,
          memArg,
          extraArgs,
          addlOptsArg
      });
{code}

I tried to fix it by using the approach, but the test then fails with other 
bugs on Windows. I disabled it for now if it detects whitespace in Solr's path. 
I think the reason might be that some of the above args are empty or are 
multi-args on itsself, so they get wrongly escaped.

I have no idea how to fix it, but the current way fails completely on Windows, 
where most users have a whitespace in their home directory or in the 
"C:\Program Files" folder.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to