Skip to content

Commit

Permalink
unnecessary code deletion and secure origin comparison
Browse files Browse the repository at this point in the history
  • Loading branch information
koust6u committed Feb 2, 2025
1 parent c656c38 commit c93bfa1
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 11 deletions.
15 changes: 4 additions & 11 deletions java/org/apache/tomcat/util/http/RequestUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -123,19 +123,12 @@ public static boolean isSameOrigin(HttpServletRequest request, String origin) {
// Build scheme://host:port from request
StringBuilder target = new StringBuilder();
String scheme = request.getScheme();
if (scheme == null) {
return false;
} else {
scheme = scheme.toLowerCase(Locale.ENGLISH);
}
target.append(scheme);
target.append("://");

String host = request.getServerName();
if (host == null) {
if (scheme == null || host == null) {
return false;
}
target.append(host);
scheme = scheme.toLowerCase(Locale.ENGLISH);
target.append(scheme).append("://").append(host);

int port = request.getServerPort();
// Origin may or may not include the (default) port.
Expand All @@ -161,7 +154,7 @@ public static boolean isSameOrigin(HttpServletRequest request, String origin) {

// Both scheme and host are case-insensitive but the CORS spec states
// this check should be case-sensitive
return origin.equals(target.toString());
return origin.contentEquals(target);
}


Expand Down
10 changes: 10 additions & 0 deletions test/org/apache/tomcat/util/http/TestRequestUtilSameOrigin.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ public static Collection<Object[]> parameters() {
TesterRequest request2 = new TesterRequest("ws", "example.com", 80);
TesterRequest request3 = new TesterRequest("http", "example.com", 443);
TesterRequest request4 = new TesterRequest("http", "example.com", 8080);
TesterRequest request5 = new TesterRequest(null, "exmaple.com", 80);
TesterRequest request6 = new TesterRequest("http", null, 8080);

parameterSets.add(new Object[] { request1, "http://example.com", Boolean.TRUE });
parameterSets.add(new Object[] { request1, "http://example.com:80", Boolean.TRUE });
Expand All @@ -59,6 +61,14 @@ public static Collection<Object[]> parameters() {
parameterSets.add(new Object[] { request4, "http://example.com:80", Boolean.FALSE });
parameterSets.add(new Object[] { request4, "http://example.com:8080", Boolean.TRUE});

parameterSets.add(new Object[]{ request5, "http://example.com:80", Boolean.FALSE});
parameterSets.add(new Object[]{ request5, "://example.com:80", Boolean.FALSE});
parameterSets.add(new Object[]{ request5, "example.com:80", Boolean.FALSE});

parameterSets.add(new Object[]{ request6, "http://example.com:80", Boolean.FALSE});
parameterSets.add(new Object[]{ request6, "http://:80", Boolean.FALSE});
parameterSets.add(new Object[]{ request6, "http://", Boolean.FALSE});

return parameterSets;
}

Expand Down

0 comments on commit c93bfa1

Please sign in to comment.