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