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)