You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2007/03/02 01:07:55 UTC

svn commit: r513558 - in /jakarta/jmeter/branches/rel-2-2: src/protocol/http/org/apache/jmeter/protocol/http/modifier/URLRewritingModifier.java test/src/org/apache/jmeter/protocol/http/modifier/TestURLRewritingModifier.java

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:jsalvata@apache.org">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: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org