Eduardo Aguinaga created CASSANDRA-12542:
--------------------------------------------

             Summary: Portability Flaw: Locale Dependent Comparison
                 Key: CASSANDRA-12542
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-12542
             Project: Cassandra
          Issue Type: Sub-task
            Reporter: Eduardo Aguinaga


Overview:
In May through June of 2016 a static analysis was performed on version 3.0.5 of 
the Cassandra source code. The analysis included 
an automated analysis using HP Fortify v4.21 SCA and a manual analysis 
utilizing SciTools Understand v4. The results of that 
analysis includes the issue below.

Issue:
In the file SpeculativeRetryParam.java on lines 91 and 103 there are a 
portability problems with the call to toLowerCase() because it has different 
locales which may lead to unexpected output. This may also circumvent custom 
validation routines.

SpeculativeRetryParam.java, lines 91-101:
{code:java}
091 if (value.toLowerCase().endsWith("ms"))
092 {
093     try
094     {
095         return custom(Double.parseDouble(value.substring(0, value.length() 
- "ms".length())));
096     }
097     catch (IllegalArgumentException e)
098     {
099         throw new ConfigurationException(format("Invalid value %s for 
option '%s'", value, TableParams.Option.SPECULATIVE_RETRY));
100     }
101 }
{code}

SpeculativeRetryParam.java, lines 103-121:
{code:java}
103 if (value.toUpperCase().endsWith(Kind.PERCENTILE.toString()))
104 {
105     double threshold;
106     try
107     {
108         threshold = Double.parseDouble(value.substring(0, value.length() - 
Kind.PERCENTILE.toString().length()));
109     }
110     catch (IllegalArgumentException e)
111     {
112         throw new ConfigurationException(format("Invalid value %s for 
option '%s'", value, TableParams.Option.SPECULATIVE_RETRY));
113     }
114 
115     if (threshold >= 0.0 && threshold <= 100.0)
116         return percentile(threshold);
117 
118     throw new ConfigurationException(format("Invalid value %s for 
PERCENTILE option '%s': must be between 0.0 and 100.0",
119                                             value,
120                                             
TableParams.Option.SPECULATIVE_RETRY));
121 }
{code}



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

Reply via email to