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]