From 3dbc2eb83c63aaf0a1ea8b75acba766e545be423 Mon Sep 17 00:00:00 2001 From: Jaikiran Pai Date: Thu, 2 Apr 2026 11:51:06 +0530 Subject: [PATCH] Michael's review - make sure the status line parsing considers only the space character --- .../sun/net/www/protocol/http/HttpURLConnection.java | 8 ++++++-- .../java/net/HttpURLConnection/ProxyBadStatusLine.java | 5 ++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/java.base/share/classes/sun/net/www/protocol/http/HttpURLConnection.java b/src/java.base/share/classes/sun/net/www/protocol/http/HttpURLConnection.java index 136ab85b3ed..480553e9a62 100644 --- a/src/java.base/share/classes/sun/net/www/protocol/http/HttpURLConnection.java +++ b/src/java.base/share/classes/sun/net/www/protocol/http/HttpURLConnection.java @@ -2041,7 +2041,11 @@ public class HttpURLConnection extends java.net.HttpURLConnection { if (statusLine == null || statusLine.isBlank()) { return invalidStatusLine; } - final StringTokenizer st = new StringTokenizer(statusLine); + // + // status-line = HTTP-version SP status-code SP [ reason-phrase ] + // SP = space character + // + final StringTokenizer st = new StringTokenizer(statusLine, " "); if (!st.hasMoreTokens()) { return invalidStatusLine; } @@ -2049,7 +2053,7 @@ public class HttpURLConnection extends java.net.HttpURLConnection { if (!st.hasMoreTokens()) { return invalidStatusLine; } - final String v = st.nextToken().trim(); // response code + final String v = st.nextToken().trim(); // status code try { return Integer.parseInt(v); } catch (NumberFormatException nfe) { diff --git a/test/jdk/java/net/HttpURLConnection/ProxyBadStatusLine.java b/test/jdk/java/net/HttpURLConnection/ProxyBadStatusLine.java index da63a3b904c..be881030715 100644 --- a/test/jdk/java/net/HttpURLConnection/ProxyBadStatusLine.java +++ b/test/jdk/java/net/HttpURLConnection/ProxyBadStatusLine.java @@ -66,7 +66,10 @@ class ProxyBadStatusLine { Arguments.of("HTTP/1.1\n", "Unable to tunnel through proxy"), Arguments.of("HTTP/1.1 301 ", "Unable to tunnel through proxy"), Arguments.of("HTTP/1.1 404 ", "Unable to tunnel through proxy"), - Arguments.of("HTTP/1.1 503 ", "Unable to tunnel through proxy") + Arguments.of("HTTP/1.1 503 ", "Unable to tunnel through proxy"), + Arguments.of("HTTP/1.1\n200 ", "Unable to tunnel through proxy"), + Arguments.of("HTTP/1.1\r200 ", "Unable to tunnel through proxy"), + Arguments.of("HTTP/1.1\f200 ", "Unable to tunnel through proxy") ); }