Author: ebourg
Date: Wed Jun 16 08:35:18 2010
New Revision: 955156

URL: http://svn.apache.org/viewvc?rev=955156&view=rev
Log:
Restricted quote stripping to values containing exactly 2 quotes, one at the 
beginning and one at the end (CLI-185)

Modified:
    commons/proper/cli/trunk/src/java/org/apache/commons/cli/Util.java
    commons/proper/cli/trunk/src/test/org/apache/commons/cli/UtilTest.java

Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli/Util.java
URL: 
http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli/Util.java?rev=955156&r1=955155&r2=955156&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli/Util.java 
(original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli/Util.java Wed Jun 
16 08:35:18 2010
@@ -62,14 +62,12 @@ class Util
      */
     static String stripLeadingAndTrailingQuotes(String str)
     {
-        if (str.startsWith("\""))
+        int length = str.length();
+        if (length > 1 && str.startsWith("\"") && str.endsWith("\"") && 
str.substring(1, length - 1).indexOf('"') == -1)
         {
-            str = str.substring(1, str.length());
-        }
-        if (str.endsWith("\""))
-        {
-            str = str.substring(0, str.length() - 1);
+            str = str.substring(1, length - 1);
         }
+        
         return str;
     }
 }

Modified: commons/proper/cli/trunk/src/test/org/apache/commons/cli/UtilTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli/UtilTest.java?rev=955156&r1=955155&r2=955156&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/test/org/apache/commons/cli/UtilTest.java 
(original)
+++ commons/proper/cli/trunk/src/test/org/apache/commons/cli/UtilTest.java Wed 
Jun 16 08:35:18 2010
@@ -35,5 +35,9 @@ public class UtilTest extends TestCase
     public void testStripLeadingAndTrailingQuotes()
     {
         assertEquals("foo", Util.stripLeadingAndTrailingQuotes("\"foo\""));
+        assertEquals("foo \"bar\"", Util.stripLeadingAndTrailingQuotes("foo 
\"bar\""));
+        assertEquals("\"foo\" bar", 
Util.stripLeadingAndTrailingQuotes("\"foo\" bar"));
+        assertEquals("\"foo\" and \"bar\"", 
Util.stripLeadingAndTrailingQuotes("\"foo\" and \"bar\""));
+        assertEquals("\"", Util.stripLeadingAndTrailingQuotes("\""));
     }
 }


Reply via email to