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 2017/12/14 12:31:52 UTC

httpcomponents-core git commit: fix request splitting in BasicLineFormatter

Repository: httpcomponents-core
Updated Branches:
  refs/heads/4.4.x ca65eaf1c -> 134de6f72


fix request splitting in BasicLineFormatter


Project: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/commit/134de6f7
Tree: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/tree/134de6f7
Diff: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/diff/134de6f7

Branch: refs/heads/4.4.x
Commit: 134de6f72cb9944a5355c8892984cce60c6f80be
Parents: ca65eaf
Author: Vladimir Lagunov <la...@yandex-team.ru>
Authored: Thu Dec 14 17:46:04 2017 +0700
Committer: Oleg Kalnichevski <ol...@apache.org>
Committed: Thu Dec 14 13:29:30 2017 +0100

----------------------------------------------------------------------
 .../org/apache/http/message/BasicLineFormatter.java   | 14 ++++++++++++--
 .../apache/http/message/TestBasicLineFormatter.java   |  7 +++++++
 2 files changed, 19 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/134de6f7/httpcore/src/main/java/org/apache/http/message/BasicLineFormatter.java
----------------------------------------------------------------------
diff --git a/httpcore/src/main/java/org/apache/http/message/BasicLineFormatter.java b/httpcore/src/main/java/org/apache/http/message/BasicLineFormatter.java
index a6c07cb..fac3a78 100644
--- a/httpcore/src/main/java/org/apache/http/message/BasicLineFormatter.java
+++ b/httpcore/src/main/java/org/apache/http/message/BasicLineFormatter.java
@@ -32,8 +32,8 @@ import org.apache.http.Header;
 import org.apache.http.ProtocolVersion;
 import org.apache.http.RequestLine;
 import org.apache.http.StatusLine;
-import org.apache.http.annotation.ThreadingBehavior;
 import org.apache.http.annotation.Contract;
+import org.apache.http.annotation.ThreadingBehavior;
 import org.apache.http.util.Args;
 import org.apache.http.util.CharArrayBuffer;
 
@@ -316,7 +316,17 @@ public class BasicLineFormatter implements LineFormatter {
         buffer.append(name);
         buffer.append(": ");
         if (value != null) {
-            buffer.append(value);
+            buffer.ensureCapacity(buffer.length() + value.length());
+            for (int valueIndex = 0; valueIndex < value.length(); valueIndex++) {
+                char valueChar = value.charAt(valueIndex);
+                if (valueChar == '\r'
+                        || valueChar == '\n'
+                        || valueChar == '\f'
+                        || valueChar == 0x0b) {
+                    valueChar = ' ';
+                }
+                buffer.append(valueChar);
+            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/134de6f7/httpcore/src/test/java/org/apache/http/message/TestBasicLineFormatter.java
----------------------------------------------------------------------
diff --git a/httpcore/src/test/java/org/apache/http/message/TestBasicLineFormatter.java b/httpcore/src/test/java/org/apache/http/message/TestBasicLineFormatter.java
index 942225d..b92c540 100644
--- a/httpcore/src/test/java/org/apache/http/message/TestBasicLineFormatter.java
+++ b/httpcore/src/test/java/org/apache/http/message/TestBasicLineFormatter.java
@@ -153,4 +153,11 @@ public class TestBasicLineFormatter {
         }
     }
 
+    @Test
+    public void testHeaderFormattingRequestSplitting() throws Exception {
+        final Header header = new BasicHeader("Host", "apache.org\r\nOops: oops");
+        final String s = BasicLineFormatter.formatHeader(header, null);
+        Assert.assertFalse(s.contains("\n"));
+        Assert.assertEquals("Host: apache.org  Oops: oops", s);
+    }
 }