Author: sebb
Date: Thu Mar  1 16:07:54 2007
New Revision: 513558

URL: http://svn.apache.org/viewvc?view=rev&rev=513558
Log:
Session name may contain meta characters

Modified:
    
jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/modifier/URLRewritingModifier.java
    
jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jmeter/protocol/http/modifier/TestURLRewritingModifier.java

Modified: 
jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/modifier/URLRewritingModifier.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/modifier/URLRewritingModifier.java?view=diff&rev=513558&r1=513557&r2=513558
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/modifier/URLRewritingModifier.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/modifier/URLRewritingModifier.java
 Thu Mar  1 16:07:54 2007
@@ -39,7 +39,6 @@
 /**
  * @author mstover
  * @author <a href="mailto:[EMAIL PROTECTED]">Jordi Salvat i Alabart</a>
- * @version $Revision$ updated on $Date$
  */
 
 public class URLRewritingModifier extends AbstractTestElement implements 
Serializable, PreProcessor {
@@ -151,28 +150,29 @@
        }
 
        private void initRegex(String argName) {
+               String quotedArg = Perl5Compiler.quotemeta(argName);// Don't 
get tripped up by RE chars in the arg name
                pathExtensionEqualsQuestionmarkRegexp = 
JMeterUtils.getPatternCache().getPattern(
-                               SEMI_COLON + argName + 
"=([^\"'>&\\s;]*)[&\\s\"'>;]?$?", // $NON-NLS-1$
+                               SEMI_COLON + quotedArg + 
"=([^\"'>&\\s;]*)[&\\s\"'>;]?$?", // $NON-NLS-1$
                                Perl5Compiler.MULTILINE_MASK | 
Perl5Compiler.READ_ONLY_MASK);
 
                pathExtensionEqualsNoQuestionmarkRegexp = 
JMeterUtils.getPatternCache().getPattern(
-                               SEMI_COLON + argName + 
"=([^\"'>&\\s;?]*)[&\\s\"'>;?]?$?", // $NON-NLS-1$
+                               SEMI_COLON + quotedArg + 
"=([^\"'>&\\s;?]*)[&\\s\"'>;?]?$?", // $NON-NLS-1$
                                Perl5Compiler.MULTILINE_MASK | 
Perl5Compiler.READ_ONLY_MASK);
 
                pathExtensionNoEqualsQuestionmarkRegexp = 
JMeterUtils.getPatternCache().getPattern(
-                               SEMI_COLON + argName + 
"([^\"'>&\\s;]*)[&\\s\"'>;]?$?", // $NON-NLS-1$
+                               SEMI_COLON + quotedArg + 
"([^\"'>&\\s;]*)[&\\s\"'>;]?$?", // $NON-NLS-1$
                                Perl5Compiler.MULTILINE_MASK | 
Perl5Compiler.READ_ONLY_MASK);
 
                pathExtensionNoEqualsNoQuestionmarkRegexp = 
JMeterUtils.getPatternCache().getPattern(
-                               SEMI_COLON + argName + 
"([^\"'>&\\s;?]*)[&\\s\"'>;?]?$?", // $NON-NLS-1$
+                               SEMI_COLON + quotedArg + 
"([^\"'>&\\s;?]*)[&\\s\"'>;?]?$?", // $NON-NLS-1$
                                Perl5Compiler.MULTILINE_MASK | 
Perl5Compiler.READ_ONLY_MASK);
 
                parameterRegexp = JMeterUtils.getPatternCache().getPattern(
                 // ;sessionid=value
-                               "[;\\?&]" + argName + 
"=([^\"'>&\\s;]*)[&\\s\"'>;]?$?" +  // $NON-NLS-1$
+                               "[;\\?&]" + quotedArg + 
"=([^\"'>&\\s;]*)[&\\s\"'>;]?$?" +  // $NON-NLS-1$
                 
                 // name="sessionid" value="value"
-                "|\\s[Nn][Aa][Mm][Ee]\\s*=\\s*[\"']" + argName
+                "|\\s[Nn][Aa][Mm][Ee]\\s*=\\s*[\"']" + quotedArg
                                + "[\"']" + "[^>]*"  // $NON-NLS-1$ 
                 + "\\s[vV][Aa][Ll][Uu][Ee]\\s*=\\s*[\"']" // $NON-NLS-1$
                 + "([^\"']*)" + "[\"']" // $NON-NLS-1$
@@ -181,7 +181,7 @@
                 + "|\\s[vV][Aa][Ll][Uu][Ee]\\s*=\\s*[\"']" // $NON-NLS-1$
                 + "([^\"']*)" + "[\"']" + "[^>]*" // $NON-NLS-1$ // 
$NON-NLS-2$ // $NON-NLS-3$
                                + "\\s[Nn][Aa][Mm][Ee]\\s*=\\s*[\"']"  // 
$NON-NLS-1$
-                + argName + "[\"']", // $NON-NLS-1$
+                + quotedArg + "[\"']", // $NON-NLS-1$
                                Perl5Compiler.MULTILINE_MASK | 
Perl5Compiler.READ_ONLY_MASK);
                // NOTE: the handling of simple- vs. double-quotes could be 
formally
                // more accurate, but I can't imagine a session id containing

Modified: 
jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jmeter/protocol/http/modifier/TestURLRewritingModifier.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jmeter/protocol/http/modifier/TestURLRewritingModifier.java?view=diff&rev=513558&r1=513557&r2=513558
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jmeter/protocol/http/modifier/TestURLRewritingModifier.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jmeter/protocol/http/modifier/TestURLRewritingModifier.java
 Thu Mar  1 16:07:54 2007
@@ -133,6 +133,23 @@
                        
assertEquals("index.html;%24sid%24KQNq3AAADQZoEQAxlkX8uQV5bjqVBPbT", 
sampler.getPath());
                }
 
+        public void testGrabSessionId5() throws Exception {
+                       String html = "location: http://server.com/index.html"; 
+ "?session[33]=jfdkjdkf%20jddkfdfjkdjfdf%22;";
+                       response = new SampleResult();
+                       response.setResponseData(html.getBytes());
+                       mod.setArgumentName("session[33]");
+                       HTTPSamplerBase sampler = createSampler();
+                       sampler.addArgument("session[33]", 
"adfasdfdsafasdfasd");
+                       context.setCurrentSampler(sampler);
+                       context.setPreviousResult(response);
+                       mod.process();
+                       Arguments args = sampler.getArguments();
+                       assertEquals("jfdkjdkf jddkfdfjkdjfdf\"", ((Argument) 
args.getArguments().get(0).getObjectValue())
+                                       .getValue());
+                       
assertEquals("http://server.com/index.html?session%5B33%5D=jfdkjdkf+jddkfdfjkdjfdf%22";,
 sampler.toString());
+               }
+
+
                public void testGrabSessionIdFromForm() throws Exception {
                        String[] html = new String[] { 
                     "<input name=\"sid\" value=\"myId\">", 



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

Reply via email to