Skip to content

Commit 894c826

Browse files
Alex Klyubinandi34
authored andcommitted
Fix a bug in DefaultHostnameVerifier wildcard handling.
Wildcard domain name patterns of the form *.remainder are supposed to match domain names that exactly match the remainder. Due to a bug, the match was not exact but rather a prefix match: domain names starting with the remainder would match too. This CL fixes the issue. Bug: 18432707 Change-Id: Ic2fccbfeac4f5d6e71b49ecbd36c248214baebad
1 parent 822236a commit 894c826

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

luni/src/main/java/javax/net/ssl/DefaultHostnameVerifier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public boolean verifyHostName(String hostName, String cn) {
137137
return hostName.equals(cn);
138138
}
139139

140-
if (cn.startsWith("*.") && hostName.regionMatches(0, cn, 2, cn.length() - 2)) {
140+
if (cn.startsWith("*.") && hostName.equals(cn.substring(2))) {
141141
return true; // "*.foo.com" matches "foo.com"
142142
}
143143

luni/src/test/java/libcore/javax/net/ssl/DefaultHostnameVerifierTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,15 +114,18 @@ public void testUnknownSubjectAltName() {
114114
public void testWildcardMatchesWildcardSuffix() {
115115
assertTrue(verifier.verifyHostName("b.c.d", "*.b.c.d"));
116116
assertTrue(verifier.verifyHostName("imap.google.com", "*.imap.google.com"));
117+
assertFalse(verifier.verifyHostName("imap.google.com.au", "*.imap.google.com"));
117118
}
118119

119120
public void testWildcardMatchingSubstring() {
120121
assertTrue(verifier.verifyHostName("b.c.d", "b*.c.d"));
121122
assertTrue(verifier.verifyHostName("imap.google.com", "ima*.google.com"));
123+
assertFalse(verifier.verifyHostName("imap.google.com.au", "ima*.google.com"));
122124
}
123125

124126
public void testWildcardMatchingEmptySubstring() {
125127
assertTrue(verifier.verifyHostName("imap.google.com", "imap*.google.com"));
128+
assertFalse(verifier.verifyHostName("imap.google.com.au", "imap*.google.com"));
126129
}
127130

128131
public void testWildcardMatchesChildDomain() {

0 commit comments

Comments
 (0)