Re: [PATCH] inet: fixed the check of inet_pton return value

2015-04-02 Thread Patrik Flykt
On Wed, 2015-04-01 at 22:32 +0300, Slava Monich wrote:
 ---

Now there are more changes than just a inet_pton retur value. Please
write a proper commit message!

  src/inet.c | 8 +++-
  1 file changed, 3 insertions(+), 5 deletions(-)
 
 diff --git a/src/inet.c b/src/inet.c
 index cd220ff..fae36a0 100644
 --- a/src/inet.c
 +++ b/src/inet.c
 @@ -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?
 
   rt.rtmsg_metric = 1;
   rt.rtmsg_ifindex = index;
 @@ -686,7 +684,7 @@ int connman_inet_clear_ipv6_gateway_address(int index, 
 const char *gateway)
  
   memset(rt, 0, sizeof(rt));
  
 - if (inet_pton(AF_INET6, gateway, rt.rtmsg_gateway)  0) {
 + if (inet_pton(AF_INET6, gateway, rt.rtmsg_gateway)  1) {
   err = -errno;
   goto out;
   }


Cheers,

Patrik

___
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman


Re: [PATCH] inet: fixed the check of inet_pton return value

2015-04-02 Thread Slava Monich
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


[PATCH] inet: fixed the check of inet_pton return value

2015-04-01 Thread Slava Monich
---
 src/inet.c | 8 +++-
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/inet.c b/src/inet.c
index cd220ff..fae36a0 100644
--- a/src/inet.c
+++ b/src/inet.c
@@ -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);
-   }
 
rt.rtmsg_metric = 1;
rt.rtmsg_ifindex = index;
@@ -686,7 +684,7 @@ int connman_inet_clear_ipv6_gateway_address(int index, 
const char *gateway)
 
memset(rt, 0, sizeof(rt));
 
-   if (inet_pton(AF_INET6, gateway, rt.rtmsg_gateway)  0) {
+   if (inet_pton(AF_INET6, gateway, rt.rtmsg_gateway)  1) {
err = -errno;
goto out;
}
-- 
1.8.3.2

___
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman