Closed tsyamamoto closed 7 years ago
I found similar issue.
javax.servlet.http.HttpServletRequest#getHeaders(null) throws NullPointerException.
[2017-05-12T09:58:45.493+0900] [glassfish 4.1] [WARNING] [] [javax.enterprise.web] [tid: _ThreadID=29 _ThreadName=http-listener-1(1)] [timeMillis: 1494550725493] [levelValue: 900] [[
StandardWrapperValve[test.bas.GetHeader]: Servlet.service() for servlet test.bas.GetHeader threw exception
java.lang.NullPointerException
at org.glassfish.grizzly.http.util.ByteChunk.equalsIgnoreCase(ByteChunk.java:974)
at org.glassfish.grizzly.http.util.ByteChunk.equalsIgnoreCase(ByteChunk.java:742)
at org.glassfish.grizzly.http.util.DataChunk.equalsIgnoreCase(DataChunk.java:685)
at org.glassfish.grizzly.http.util.ValuesIterator.findNext(MimeHeaders.java:756)
at org.glassfish.grizzly.http.util.ValuesIterator.<init>(MimeHeaders.java:749)
at org.glassfish.grizzly.http.util.MimeHeaders$2.iterator(MimeHeaders.java:374)
at org.apache.catalina.connector.Request.getHeaders(Request.java:2665)
at org.apache.catalina.connector.RequestFacade.getHeaders(RequestFacade.java:730)
at test.bas.GetHeader.doGet(GetHeader.java:51)
In javadoc of servlet api, the behavior of null is not referred. So the behavior of null may be vendor specific. However, getHeader(null) does not throw NullPointerException. So the behavior of getHeaders(null) seems to be a bug,
HttpServletRequest#getHeader throws StringIndexOutOfBoundsException. I think checking empty value is missing.
Sample servlet application: GetHeader.java
server.log of GlassFish 4.1.2
grizzly\modules\http\src\main\java\org\glassfish\grizzly\http\HttpHeader.java