Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2015-02-11 03:30:26 +0000
committerGreg Wilkins2015-02-11 03:30:26 +0000
commitca8015828cd3054d93c416c60c03e3cb9e4f9cc5 (patch)
treedb2a8c4d7b4bfaf0f75f74ff27b24664b4cef01d /jetty-http
parent2162455b72d5a474bba47d5daf5543d46c2688be (diff)
downloadorg.eclipse.jetty.project-ca8015828cd3054d93c416c60c03e3cb9e4f9cc5.tar.gz
org.eclipse.jetty.project-ca8015828cd3054d93c416c60c03e3cb9e4f9cc5.tar.xz
org.eclipse.jetty.project-ca8015828cd3054d93c416c60c03e3cb9e4f9cc5.zip
458663 Handle null header values
Diffstat (limited to 'jetty-http')
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java13
-rw-r--r--jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java33
2 files changed, 43 insertions, 3 deletions
diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java
index ea6480028f..bdeb2dec96 100644
--- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java
+++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java
@@ -1046,7 +1046,18 @@ public class HttpParser
if (ch==HttpTokens.SPACE || ch==HttpTokens.TAB)
break;
-
+
+ if (ch==HttpTokens.LINE_FEED)
+ {
+ _value=null;
+ _string.setLength(0);
+ _valueString=null;
+ _length=-1;
+
+ parsedHeader();
+ setState(State.HEADER);
+ break;
+ }
throw new IllegalCharacter(ch,buffer);
case HEADER_IN_VALUE:
diff --git a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java
index 7ea4c2f72f..7361ecc58c 100644
--- a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java
+++ b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java
@@ -269,8 +269,37 @@ public class HttpParserTest
}
-
-
+
+ @Test
+ public void testNoValue() throws Exception
+ {
+ ByteBuffer buffer= BufferUtil.toBuffer(
+ "GET / HTTP/1.0\015\012" +
+ "Host: localhost\015\012" +
+ "Name0: \015\012"+
+ "Name1: \015\012"+
+ "Connection: close\015\012" +
+ "\015\012");
+
+ HttpParser.RequestHandler handler = new Handler();
+ HttpParser parser= new HttpParser(handler);
+ parseAll(parser,buffer);
+
+ assertTrue(_headerCompleted);
+ assertTrue(_messageCompleted);
+ assertEquals("GET", _methodOrVersion);
+ assertEquals("/", _uriOrStatus);
+ assertEquals("HTTP/1.0", _versionOrReason);
+ assertEquals("Host", _hdr[0]);
+ assertEquals("localhost", _val[0]);
+ assertEquals("Name0", _hdr[1]);
+ assertEquals(null, _val[1]);
+ assertEquals("Name1", _hdr[2]);
+ assertEquals(null, _val[2]);
+ assertEquals("Connection", _hdr[3]);
+ assertEquals("close", _val[3]);
+ assertEquals(3, _headers);
+ }
@Test
public void testHeaderParseDirect() throws Exception

Back to the top