You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2009/07/01 22:06:54 UTC

svn commit: r790351 - in /httpcomponents/httpcore/trunk/httpcore/src: main/java/org/apache/http/message/BasicLineParser.java test/java/org/apache/http/message/TestBasicLineParser.java

Author: olegk
Date: Wed Jul  1 20:06:54 2009
New Revision: 790351

URL: http://svn.apache.org/viewvc?rev=790351&view=rev
Log:
Negative HTTP status code will cause a ParseException instead of IllegalArgumentException

Modified:
    httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/message/BasicLineParser.java
    httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicLineParser.java

Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/message/BasicLineParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/message/BasicLineParser.java?rev=790351&r1=790350&r2=790351&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/message/BasicLineParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/message/BasicLineParser.java Wed Jul  1 20:06:54 2009
@@ -412,13 +412,20 @@
                 blank = indexTo;
             }
             int statusCode = 0;
+            String s = buffer.substringTrimmed(i, blank);
+            for (int j = 0; j < s.length(); j++) {
+                if (!Character.isDigit(s.charAt(j))) {
+                    throw new ParseException(
+                            "Status line contains invalid status code: " 
+                            + buffer.substring(indexFrom, indexTo));
+                }
+            }
             try {
-                statusCode =
-                    Integer.parseInt(buffer.substringTrimmed(i, blank));
+                statusCode = Integer.parseInt(s);
             } catch (NumberFormatException e) {
                 throw new ParseException(
-                    "Unable to parse status code from status line: " 
-                    + buffer.substring(indexFrom, indexTo));
+                        "Status line contains invalid status code: " 
+                        + buffer.substring(indexFrom, indexTo));
             }
             //handle the Reason-Phrase
             i = blank;

Modified: httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicLineParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicLineParser.java?rev=790351&r1=790350&r2=790351&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicLineParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicLineParser.java Wed Jul  1 20:06:54 2009
@@ -207,12 +207,20 @@
         } catch (ParseException e) {
             // expected
         }
+
         try {
             BasicLineParser.parseStatusLine("HTTP/1.1", null);
             fail();
         } catch (ParseException e) {
             // expected
         }
+
+        try {
+            BasicLineParser.parseStatusLine("HTTP/1.1 -200 OK", null);
+            fail();
+        } catch (ParseException e) {
+            // expected
+        }
     }
 
     public void testHttpVersionParsing() throws Exception {