You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2019/04/29 11:30:22 UTC

[tomcat] branch master updated: Better error for empty header name

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

remm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/master by this push:
     new fa43440  Better error for empty header name
fa43440 is described below

commit fa43440991fdb5d088a6417425cd18a80ba2cf71
Author: remm <re...@apache.org>
AuthorDate: Mon Apr 29 13:30:06 2019 +0200

    Better error for empty header name
    
    Also add back logging for a while.
---
 conf/logging.properties                              | 2 +-
 java/org/apache/coyote/http2/LocalStrings.properties | 1 +
 java/org/apache/coyote/http2/Stream.java             | 7 ++++++-
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/conf/logging.properties b/conf/logging.properties
index e8b7b16..fc52083 100644
--- a/conf/logging.properties
+++ b/conf/logging.properties
@@ -73,7 +73,7 @@ org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].ha
 #org.apache.jasper.compiler.TldLocationsCache.level = FINE
 
 # To see debug messages for HTTP/2 handling, uncomment the following line:
-#org.apache.coyote.http2.level = FINE
+org.apache.coyote.http2.level = FINE
 
 # To see debug messages for WebSocket handling, uncomment the following line:
 #org.apache.tomcat.websocket.level = FINE
diff --git a/java/org/apache/coyote/http2/LocalStrings.properties b/java/org/apache/coyote/http2/LocalStrings.properties
index 17dbf88..b2ac336 100644
--- a/java/org/apache/coyote/http2/LocalStrings.properties
+++ b/java/org/apache/coyote/http2/LocalStrings.properties
@@ -83,6 +83,7 @@ stream.header.connection=Connection [{0}], Stream [{1}], HTTP header [connection
 stream.header.contentLength=Connection [{0}], Stream [{1}], The content length header value [{2}] does not agree with the size of the data received [{3}]
 stream.header.debug=Connection [{0}], Stream [{1}], HTTP header [{2}], Value [{3}]
 stream.header.duplicate=Connection [{0}], Stream [{1}], received multiple [{3}] headers
+stream.header.empty=Connection [{0}], Stream [{1}], Invalid empty header name
 stream.header.invalid=Connection [{0}], Stream [{1}], The header [{2}] contained invalid value [{3}]
 stream.header.noPath=Connection [{0}], Stream [{1}], The [:path] pseudo header was empty
 stream.header.required=Connection [{0}], Stream [{1}], One or more required headers was missing
diff --git a/java/org/apache/coyote/http2/Stream.java b/java/org/apache/coyote/http2/Stream.java
index 0bb12a0..21304d9 100644
--- a/java/org/apache/coyote/http2/Stream.java
+++ b/java/org/apache/coyote/http2/Stream.java
@@ -347,6 +347,11 @@ class Stream extends AbstractStream implements HeaderEmitter {
             return;
         }
 
+        if (name.length() == 0) {
+            throw new HpackException(sm.getString("stream.header.empty",
+                    getConnectionId(), getIdentifier()));
+        }
+
         boolean pseudoHeader = name.charAt(0) == ':';
 
         if (pseudoHeader && headerState != HEADER_STATE_PSEUDO) {
@@ -361,7 +366,7 @@ class Stream extends AbstractStream implements HeaderEmitter {
             headerState = HEADER_STATE_REGULAR;
         }
 
-        switch(name) {
+        switch (name) {
         case ":method": {
             if (coyoteRequest.method().isNull()) {
                 coyoteRequest.method().setString(value);


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: [tomcat] branch master updated: Better error for empty header name

Posted by Mark Thomas <ma...@apache.org>.
On 29/04/2019 13:20, Rémy Maucherat wrote:
> On Mon, Apr 29, 2019 at 1:53 PM Mark Thomas <ma...@apache.org> wrote:
> 
>> On 29/04/2019 12:30, remm@apache.org wrote:
>>> This is an automated email from the ASF dual-hosted git repository.
>>>
>>> remm pushed a commit to branch master
>>> in repository https://gitbox.apache.org/repos/asf/tomcat.git
>>>
>>>
>>> The following commit(s) were added to refs/heads/master by this push:
>>>      new fa43440  Better error for empty header name
>>> fa43440 is described below
>>>
>>> commit fa43440991fdb5d088a6417425cd18a80ba2cf71
>>> Author: remm <re...@apache.org>
>>> AuthorDate: Mon Apr 29 13:30:06 2019 +0200
>>>
>>>     Better error for empty header name
>>>
>>>     Also add back logging for a while.
>>> ---
>>>  conf/logging.properties                              | 2 +-
>>>  java/org/apache/coyote/http2/LocalStrings.properties | 1 +
>>>  java/org/apache/coyote/http2/Stream.java             | 7 ++++++-
>>>  3 files changed, 8 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/conf/logging.properties b/conf/logging.properties
>>> index e8b7b16..fc52083 100644
>>> --- a/conf/logging.properties
>>> +++ b/conf/logging.properties
>>> @@ -73,7 +73,7 @@
>> org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].ha
>>>  #org.apache.jasper.compiler.TldLocationsCache.level = FINE
>>>
>>>  # To see debug messages for HTTP/2 handling, uncomment the following
>> line:
>>> -#org.apache.coyote.http2.level = FINE
>>> +org.apache.coyote.http2.level = FINE
>>
>> This looks like a accidental commit.
>>
> 
> "Also add back logging for a while." :) So it wasn't an accident.

ACK. Still getting used to the new format commit messages. Sorry for the
noise.

Mark


> After tens of builds which were fine, right after I wrote "The testing
> looks fine so far so I don't plan to switch the default back at this
> time.", #4253 produced a relevant anomaly
> https://ci.apache.org/projects/tomcat/tomcat9/logs/4253/TEST-org.apache.coyote.http2.TestStreamQueryString.NIO.txt,
> with this exception trace:
> Exception in thread "http-nio-127.0.0.1-auto-38-exec-3"
> java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException:
> String index out of range: 0
>     at
> org.apache.coyote.http2.Http2AsyncParser.handleAsyncException(Http2AsyncParser.java:80)
>     at
> org.apache.coyote.http2.Http2AsyncParser.readFrame(Http2AsyncParser.java:56)
>     at org.apache.coyote.http2.Http2Parser.readFrame(Http2Parser.java:69)
>     at
> org.apache.coyote.http2.Http2UpgradeHandler.upgradeDispatch(Http2UpgradeHandler.java:322)
>     at
> org.apache.coyote.http2.Http2AsyncUpgradeHandler.upgradeDispatch(Http2AsyncUpgradeHandler.java:37)
>     at
> org.apache.coyote.http2.Http2AsyncParser$FrameCompletionHandler.completed(Http2AsyncParser.java:231)
>     at
> org.apache.coyote.http2.Http2AsyncParser$FrameCompletionHandler.completed(Http2AsyncParser.java:85)
>     at
> org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper$VectoredIOCompletionHandler.completed(NioEndpoint.java:1721)
>     at
> org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper$OperationState.run(NioEndpoint.java:1537)
>     at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>     at
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>     at java.lang.Thread.run(Thread.java:748)
> Caused by: java.lang.StringIndexOutOfBoundsException: String index out of
> range: 0
>     at java.lang.String.charAt(String.java:658)
>     at org.apache.coyote.http2.Stream.emitHeader(Stream.java:350)
>     at
> org.apache.coyote.http2.HpackDecoder.emitHeader(HpackDecoder.java:430)
>     at org.apache.coyote.http2.HpackDecoder.decode(HpackDecoder.java:138)
>     at
> org.apache.coyote.http2.Http2Parser.readHeaderPayload(Http2Parser.java:474)
>     at
> org.apache.coyote.http2.Http2Parser.readHeadersFrame(Http2Parser.java:267)
>     at
> org.apache.coyote.http2.Http2AsyncParser$FrameCompletionHandler.completed(Http2AsyncParser.java:167)
>     ... 7 more
> 
> Rémy
> 
>>
>> Mark
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: dev-help@tomcat.apache.org
>>
>>
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: [tomcat] branch master updated: Better error for empty header name

Posted by Rémy Maucherat <re...@apache.org>.
On Mon, Apr 29, 2019 at 1:53 PM Mark Thomas <ma...@apache.org> wrote:

> On 29/04/2019 12:30, remm@apache.org wrote:
> > This is an automated email from the ASF dual-hosted git repository.
> >
> > remm pushed a commit to branch master
> > in repository https://gitbox.apache.org/repos/asf/tomcat.git
> >
> >
> > The following commit(s) were added to refs/heads/master by this push:
> >      new fa43440  Better error for empty header name
> > fa43440 is described below
> >
> > commit fa43440991fdb5d088a6417425cd18a80ba2cf71
> > Author: remm <re...@apache.org>
> > AuthorDate: Mon Apr 29 13:30:06 2019 +0200
> >
> >     Better error for empty header name
> >
> >     Also add back logging for a while.
> > ---
> >  conf/logging.properties                              | 2 +-
> >  java/org/apache/coyote/http2/LocalStrings.properties | 1 +
> >  java/org/apache/coyote/http2/Stream.java             | 7 ++++++-
> >  3 files changed, 8 insertions(+), 2 deletions(-)
> >
> > diff --git a/conf/logging.properties b/conf/logging.properties
> > index e8b7b16..fc52083 100644
> > --- a/conf/logging.properties
> > +++ b/conf/logging.properties
> > @@ -73,7 +73,7 @@
> org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].ha
> >  #org.apache.jasper.compiler.TldLocationsCache.level = FINE
> >
> >  # To see debug messages for HTTP/2 handling, uncomment the following
> line:
> > -#org.apache.coyote.http2.level = FINE
> > +org.apache.coyote.http2.level = FINE
>
> This looks like a accidental commit.
>

"Also add back logging for a while." :) So it wasn't an accident.

After tens of builds which were fine, right after I wrote "The testing
looks fine so far so I don't plan to switch the default back at this
time.", #4253 produced a relevant anomaly
https://ci.apache.org/projects/tomcat/tomcat9/logs/4253/TEST-org.apache.coyote.http2.TestStreamQueryString.NIO.txt,
with this exception trace:
Exception in thread "http-nio-127.0.0.1-auto-38-exec-3"
java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException:
String index out of range: 0
    at
org.apache.coyote.http2.Http2AsyncParser.handleAsyncException(Http2AsyncParser.java:80)
    at
org.apache.coyote.http2.Http2AsyncParser.readFrame(Http2AsyncParser.java:56)
    at org.apache.coyote.http2.Http2Parser.readFrame(Http2Parser.java:69)
    at
org.apache.coyote.http2.Http2UpgradeHandler.upgradeDispatch(Http2UpgradeHandler.java:322)
    at
org.apache.coyote.http2.Http2AsyncUpgradeHandler.upgradeDispatch(Http2AsyncUpgradeHandler.java:37)
    at
org.apache.coyote.http2.Http2AsyncParser$FrameCompletionHandler.completed(Http2AsyncParser.java:231)
    at
org.apache.coyote.http2.Http2AsyncParser$FrameCompletionHandler.completed(Http2AsyncParser.java:85)
    at
org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper$VectoredIOCompletionHandler.completed(NioEndpoint.java:1721)
    at
org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper$OperationState.run(NioEndpoint.java:1537)
    at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of
range: 0
    at java.lang.String.charAt(String.java:658)
    at org.apache.coyote.http2.Stream.emitHeader(Stream.java:350)
    at
org.apache.coyote.http2.HpackDecoder.emitHeader(HpackDecoder.java:430)
    at org.apache.coyote.http2.HpackDecoder.decode(HpackDecoder.java:138)
    at
org.apache.coyote.http2.Http2Parser.readHeaderPayload(Http2Parser.java:474)
    at
org.apache.coyote.http2.Http2Parser.readHeadersFrame(Http2Parser.java:267)
    at
org.apache.coyote.http2.Http2AsyncParser$FrameCompletionHandler.completed(Http2AsyncParser.java:167)
    ... 7 more

Rémy

>
> Mark
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>

Re: [tomcat] branch master updated: Better error for empty header name

Posted by Mark Thomas <ma...@apache.org>.
On 29/04/2019 12:30, remm@apache.org wrote:
> This is an automated email from the ASF dual-hosted git repository.
> 
> remm pushed a commit to branch master
> in repository https://gitbox.apache.org/repos/asf/tomcat.git
> 
> 
> The following commit(s) were added to refs/heads/master by this push:
>      new fa43440  Better error for empty header name
> fa43440 is described below
> 
> commit fa43440991fdb5d088a6417425cd18a80ba2cf71
> Author: remm <re...@apache.org>
> AuthorDate: Mon Apr 29 13:30:06 2019 +0200
> 
>     Better error for empty header name
>     
>     Also add back logging for a while.
> ---
>  conf/logging.properties                              | 2 +-
>  java/org/apache/coyote/http2/LocalStrings.properties | 1 +
>  java/org/apache/coyote/http2/Stream.java             | 7 ++++++-
>  3 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/conf/logging.properties b/conf/logging.properties
> index e8b7b16..fc52083 100644
> --- a/conf/logging.properties
> +++ b/conf/logging.properties
> @@ -73,7 +73,7 @@ org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].ha
>  #org.apache.jasper.compiler.TldLocationsCache.level = FINE
>  
>  # To see debug messages for HTTP/2 handling, uncomment the following line:
> -#org.apache.coyote.http2.level = FINE
> +org.apache.coyote.http2.level = FINE

This looks like a accidental commit.

Mark


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org