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