[ 
https://issues.apache.org/jira/browse/VALIDATOR-419?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Denis Iskhakov updated VALIDATOR-419:
-------------------------------------
    Description: 
1) {{InetAddressValidator.getInstance().isValidInet6Address(String 
inet6Address)}} returns {{true}} for value 
{{0::1:192.168.1.1:192.168.1.1}}

I believe this is due to wrong comparison operand in line #166 of 
InetAddressValidator: 
{code}
if (index > octets.length - 1 || index > 6) {  // CHECKSTYLE IGNORE MagicNumber
    // IPV4 occupies last two octets
    return false;
}
{code} 
{{index > octets.length - 1}} expression will never be true inside cycle 
{code}for (int index = 0; index < octets.length; index++){code}

2) According to https://tools.ietf.org/html/rfc4291 IPv6 address that is 
IPv4-mapped must start with five zero octets followed by one {{ffff}} octet. 
Current implementation of InetAddressValidator does not check this. E.g. 
{{1::2:192.168.1.1}} is considered valid.

  was:
{{InetAddressValidator.getInstance().isValidInet6Address(String inet6Address)}} 
returns {{true}} for value 
{{0::1:192.168.1.1:192.168.1.1}}

I believe this is due to wrong comparison operand in line #166 of 
InetAddressValidator: 
{code}
if (index > octets.length - 1 || index > 6) {  // CHECKSTYLE IGNORE MagicNumber
    // IPV4 occupies last two octets
    return false;
}
{code} 
{{index > octets.length - 1}} expression will never be true inside cycle 
{code}for (int index = 0; index < octets.length; index++){code}


> Invalid IPv6 addresses that are IPv4-mapped pass InetAddressValidator 
> validation
> --------------------------------------------------------------------------------
>
>                 Key: VALIDATOR-419
>                 URL: https://issues.apache.org/jira/browse/VALIDATOR-419
>             Project: Commons Validator
>          Issue Type: Bug
>          Components: Routines
>    Affects Versions: 1.5.1
>            Reporter: Denis Iskhakov
>            Priority: Minor
>
> 1) {{InetAddressValidator.getInstance().isValidInet6Address(String 
> inet6Address)}} returns {{true}} for value 
> {{0::1:192.168.1.1:192.168.1.1}}
> I believe this is due to wrong comparison operand in line #166 of 
> InetAddressValidator: 
> {code}
> if (index > octets.length - 1 || index > 6) {  // CHECKSTYLE IGNORE 
> MagicNumber
>     // IPV4 occupies last two octets
>     return false;
> }
> {code} 
> {{index > octets.length - 1}} expression will never be true inside cycle 
> {code}for (int index = 0; index < octets.length; index++){code}
> 2) According to https://tools.ietf.org/html/rfc4291 IPv6 address that is 
> IPv4-mapped must start with five zero octets followed by one {{ffff}} octet. 
> Current implementation of InetAddressValidator does not check this. E.g. 
> {{1::2:192.168.1.1}} is considered valid.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to