Author: sebb
Date: Fri Nov 16 16:04:48 2007
New Revision: 595877

URL: http://svn.apache.org/viewvc?rev=595877&view=rev
Log:
Reject HTTPS requests

Modified:
    
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java

Modified: 
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java?rev=595877&r1=595876&r2=595877&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java
 Fri Nov 16 16:04:48 2007
@@ -30,6 +30,7 @@
 import java.util.Map;
 import java.util.StringTokenizer;
 
+import org.apache.commons.lang.CharUtils;
 import org.apache.jmeter.protocol.http.config.MultipartUrlConfig;
 import org.apache.jmeter.protocol.http.control.Header;
 import org.apache.jmeter.protocol.http.control.HeaderManager;
@@ -122,6 +123,9 @@
                while ((inHeaders || readLength < dataLength) && ((x = 
in.read()) != -1)) {
                        line.write(x);
                        clientRequest.write(x);
+                       if (inHeaders && !CharUtils.isAscii((char) x)){
+                               throw new IllegalArgumentException("Only ASCII 
supported in headers (perhaps SSL was used?)");
+                       }
                        if (inHeaders && (byte) x == (byte) '\n') { // 
$NON-NLS-1$
                                if (line.size() < 3) {
                                        inHeaders = false;
@@ -151,14 +155,28 @@
        }
 
        private void parseFirstLine(String firstLine) {
-        if (log.isDebugEnabled())
+        if (log.isDebugEnabled()) {
                log.debug("browser request: " + firstLine);
+        }
+        if (!CharUtils.isAsciiAlphanumeric(firstLine.charAt(0))) {
+               throw new IllegalArgumentException("Unrecognised header line 
(probably used HTTPS)");
+        }
                StringTokenizer tz = new StringTokenizer(firstLine);
                method = getToken(tz).toUpperCase();
                url = getToken(tz);
-        if (log.isDebugEnabled())
-               log.debug("parsed url: " + url);
+               if (url.toLowerCase().startsWith(HTTPConstants.PROTOCOL_HTTPS)) 
{
+                       throw new IllegalArgumentException("Cannot handle https 
URLS: " + url);
+               }
                version = getToken(tz);
+        if (log.isDebugEnabled()) {
+               log.debug("parser input:  " + firstLine);
+               log.debug("parsed method: " + method);
+               log.debug("parsed url:    " + url);
+               log.debug("parsed version:" + version);
+        }
+        if ("CONNECT".equalsIgnoreCase(method)){
+               throw new IllegalArgumentException("Cannot handle CONNECT - 
probably used HTTPS");              
+        }
        }
 
     /*
@@ -298,7 +316,7 @@
         if (log.isDebugEnabled())
                log.debug("Proxy: setting server: " + sampler.getDomain());
                sampler.setMethod(method);
-               log.debug("Proxy: method server: " + sampler.getMethod());
+               log.debug("Proxy: setting method: " + sampler.getMethod());
                sampler.setPort(serverPort());
         if (log.isDebugEnabled())
             log.debug("Proxy: setting port: " + sampler.getPort());



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

Reply via email to