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);
+ }
}