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 2019/09/25 14:24:09 UTC

[httpcomponents-core] 01/01: HTTPCLIENT-2016, regression: Tab chars are replaced by question marks in header values

This is an automated email from the ASF dual-hosted git repository.

olegk pushed a commit to branch HTTPCLIENT-2016
in repository https://gitbox.apache.org/repos/asf/httpcomponents-core.git

commit 7a617f4379c77359300478cff35d869a387227db
Author: Oleg Kalnichevski <ol...@apache.org>
AuthorDate: Wed Sep 25 16:22:59 2019 +0200

    HTTPCLIENT-2016, regression: Tab chars are replaced by question marks in header values
---
 httpcore/src/main/java/org/apache/http/util/ByteArrayBuffer.java  | 8 +++++---
 .../src/test/java/org/apache/http/util/TestByteArrayBuffer.java   | 2 +-
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/httpcore/src/main/java/org/apache/http/util/ByteArrayBuffer.java b/httpcore/src/main/java/org/apache/http/util/ByteArrayBuffer.java
index 1cc3efd..7f92b77 100644
--- a/httpcore/src/main/java/org/apache/http/util/ByteArrayBuffer.java
+++ b/httpcore/src/main/java/org/apache/http/util/ByteArrayBuffer.java
@@ -137,9 +137,11 @@ public final class ByteArrayBuffer implements Serializable {
         }
 
         for (int i1 = off, i2 = oldlen; i2 < newlen; i1++, i2++) {
-            if ((b[i1] >= 0x20 && b[i1] <= 0x7E) || // Visible ASCII
-                (b[i1] >= 0xA0 && b[i1] <= 0xFF)) { // Visible ISO-8859-1
-                this.buffer[i2] = (byte) b[i1];
+            final int c = b[i1];
+            if ((c >= 0x20 && c <= 0x7E) || // Visible ASCII
+                (c >= 0xA0 && c <= 0xFF) || // Visible ISO-8859-1
+                c == 0x09) {                // TAB
+                this.buffer[i2] = (byte) c;
             } else {
                 this.buffer[i2] = '?';
             }
diff --git a/httpcore/src/test/java/org/apache/http/util/TestByteArrayBuffer.java b/httpcore/src/test/java/org/apache/http/util/TestByteArrayBuffer.java
index 9464353..835181f 100644
--- a/httpcore/src/test/java/org/apache/http/util/TestByteArrayBuffer.java
+++ b/httpcore/src/test/java/org/apache/http/util/TestByteArrayBuffer.java
@@ -322,7 +322,7 @@ public class TestByteArrayBuffer {
         final byte[] bytes = asByteArray(chars);
 
         Assert.assertEquals(
-            "????????????????????????????????"
+            "?????????\t??????????????????????"
                 + " !\"#$%&'()*+,-./0123456789:;<=>?"
                 + "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
                 + "`abcdefghijklmnopqrstuvwxyz"