On 02/04/15 09:14, Patrik Flykt wrote:
> @@ -634,17 +634,15 @@ int connman_inet_add_ipv6_network_route(int index, 
> const char *host,
>  
>       rt.rtmsg_dst_len = prefix_len;
>  
> -     if (inet_pton(AF_INET6, host, &rt.rtmsg_dst) < 0) {
> +     if (inet_pton(AF_INET6, host, &rt.rtmsg_dst) < 1) {
>               err = -errno;
>               goto out;
>       }
>  
>       rt.rtmsg_flags = RTF_UP | RTF_HOST;
>  
> -     if (gateway) {
> +     if (gateway && inet_pton(AF_INET6, gateway, &rt.rtmsg_gateway) > 0)
>               rt.rtmsg_flags |= RTF_GATEWAY;
> -             inet_pton(AF_INET6, gateway, &rt.rtmsg_gateway);
> -     }
> At this point if inet_pton fails, why are we continuing with the
> rt.rtmsg? Apparently there was a gateway with an unusable IPv6 address
> so shouldn't we return error instead?


In cases where it does happen in reality, even if we return an error,
the caller (add_nameserver_route) would call
connman_inet_add_ipv6_network_route again with NULL gateway. This code
is doing it in one shot but it does make an assumption about what the
caller actually means by providing an invalid gateway address.

In any case it's better than using bogus gateway address.

Regards,
-Slava
_______________________________________________
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman

Reply via email to