diff options
author | Greg Wilkins | 2015-02-11 03:30:26 +0000 |
---|---|---|
committer | Greg Wilkins | 2015-02-11 03:30:26 +0000 |
commit | ca8015828cd3054d93c416c60c03e3cb9e4f9cc5 (patch) | |
tree | db2a8c4d7b4bfaf0f75f74ff27b24664b4cef01d /jetty-http | |
parent | 2162455b72d5a474bba47d5daf5543d46c2688be (diff) | |
download | org.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.java | 13 | ||||
-rw-r--r-- | jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java | 33 |
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 |