@@ -793,6 +793,48 @@ class HostnameVerifierTest {
793793 assertThat(verifier.verify(" ℡.com" , session)).isFalse()
794794 }
795795
796+ @Test fun malformedIpAddressAndMalformedSubjectAltName () {
797+ // $ cat ./cert.cnf
798+ // [req]
799+ // distinguished_name=distinguished_name
800+ // x509_extensions=x509_extensions
801+ // [distinguished_name]
802+ // [x509_extensions]
803+ // # An iPAddress holding an address and a netmask. Java reads it back as
804+ // # '1.2.3.4/255.255.255.0', which is not a host name.
805+ // subjectAltName=DER:30:0a:87:08:01:02:03:04:ff:ff:ff:00
806+ //
807+ // $ openssl req -x509 -nodes -days 36500 -subj '/CN=foo.com' -config ./cert.cnf \
808+ // -newkey rsa:2048 -out cert.pem
809+ val session =
810+ session(
811+ """
812+ -----BEGIN CERTIFICATE-----
813+ MIIC6jCCAdKgAwIBAgIUOs0TfFZ8c478WBRA5JhYDmCY27kwDQYJKoZIhvcNAQEL
814+ BQAwEjEQMA4GA1UEAwwHZm9vLmNvbTAgFw0yNjA3MjkxNzQzMzZaGA8yMTI2MDcw
815+ NTE3NDMzNlowEjEQMA4GA1UEAwwHZm9vLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
816+ ggEPADCCAQoCggEBAKRuEQYMeSBJkGt4Xah86p1TthHyTrQDqp2n2UMUFAbx6zSq
817+ LXJ/VMRMevKectFkgu2i+blMDvQcgiy3Mu1CNvGdJtWqCiUThZgvZVxAfliU5YNi
818+ K7X7V9EK+FqF1SB2mpzxhY2+a+tPBFTUxMFqOHl8JMZ1ZVTtmbRn+N1l9DojjqM5
819+ R0DZcxC/p5Fu6+EmFRc5ORK7J2s1NBYsEm5Arr64Vy/h9XUiz38uX+umQb8tUWtf
820+ KjneRhiGWehqzpOpKzsk8KQ7TDFbT3++jltyzoTaeJ1S1wO3ORjGgQ1JPgmHXw17
821+ 4LymfT36hs1KY30h6Pq9hQWeRPk47n5SVpDvK8kCAwEAAaM2MDQwEwYDVR0RBAww
822+ CocIAQIDBP///wAwHQYDVR0OBBYEFMxmf4cFN9j8mIzwq4OJFwTOev1BMA0GCSqG
823+ SIb3DQEBCwUAA4IBAQCTS5DRJjNMxGfc1w8wSoiAWM+ZNQk/Pdi7iysLVLSjlE9w
824+ RmOd6oB3bsukBfUYTidM5m0Jq2hFXSQ7pb5pghh+E8IKnqYighFiFBlroQABswQ2
825+ BCCftWj0P9cGSp27Uq9yjvjNUDXHIDxS6qgCcsnNOpFF8NWGJ3YQPvPXkxC3C1rX
826+ rCu5cpLiayY5CdZcuqxqE68l3zaMh3Vd8YCaIwJupkMVRJ0emNnv92/7t86rsGDO
827+ P4laLm0p2pMeNrcZular1zvxzcVIv5uKq5ND+EBHp/rsT+Qy9n/NlRsspLTkQKsA
828+ Lu6ozoYr25wr3VMYnoba4P/fiCJOXhO7f/pxbUao
829+ -----END CERTIFICATE-----
830+ """ .trimIndent(),
831+ )
832+
833+ // Both of these have two '::' and are not addresses.
834+ assertThat(verifier.verify(" 1::2::3" , session)).isFalse()
835+ assertThat(verifier.verify(" ::1::" , session)).isFalse()
836+ }
837+
796838 @Test fun thatCatchesErrorsWithBadSession () {
797839 val localVerifier = OkHttpClient ().hostnameVerifier
798840
0 commit comments