[oe-commits] [openembedded-core] 44/60: net-tools: lib/inet6.c:INET6_rresolve() - various fixes

git at git.openembedded.org git at git.openembedded.org
Mon Jul 25 08:59:11 UTC 2016


rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit cbe86056a931b9b6c7204d46d17abf262a92dc62
Author: Shan Hai <shan.hai at windriver.com>
AuthorDate: Thu Jul 21 22:21:19 2016 -0400

    net-tools: lib/inet6.c:INET6_rresolve() - various fixes
    
    Integrate the commit from https://github.com/ecki/net-tools/commit/a70c568b907d23ec2cf7defc81be50c351968f12
    to fix a bug which causes the 'netstat -a' to print "[UNKNOWN]" in case of
    DNS problem instead of IPv6 address.
    
    Signed-off-by: Jianchuan Wang <jianchuan.wang at windriver.com>
    Signed-off-by: Ross Burton <ross.burton at intel.com>
---
 ...-lib-inet6.c-INET6_rresolve-various-fixes.patch | 87 ++++++++++++++++++++++
 .../net-tools/net-tools_1.60-26.bb                 |  1 +
 2 files changed, 88 insertions(+)

diff --git a/meta/recipes-extended/net-tools/net-tools/0001-lib-inet6.c-INET6_rresolve-various-fixes.patch b/meta/recipes-extended/net-tools/net-tools/0001-lib-inet6.c-INET6_rresolve-various-fixes.patch
new file mode 100644
index 0000000..8be45cc
--- /dev/null
+++ b/meta/recipes-extended/net-tools/net-tools/0001-lib-inet6.c-INET6_rresolve-various-fixes.patch
@@ -0,0 +1,87 @@
+From 08abfcd923e9f37d1902db26771b1dc6731eb265 Mon Sep 17 00:00:00 2001
+From: Jiri Popelka <jpopelka at redhat.com>
+Date: Fri, 27 Sep 2013 18:40:06 +0200
+Subject: [PATCH 1/1] lib/inet6.c:INET6_rresolve() - various fixes
+
+1) Fall-back to numeric address if getnameinfo fails.
+   Reverse lookup is not mandatory, therefore its fail
+   is not an error. Just return numeric address in that case.
+   This makes netstat/route show IPv6 address instead of
+   [UNKNOWN] in case of DNS problems.
+
+2) Pass length of 'name' buffer into function.
+   'name' is a pointer and therefore sizeof(name)
+   returns size of pointer and not size of the buffer.
+   see http://stackoverflow.com/questions/14298710/c-pointers-and-arrays-sizeof-operator
+   The sizeof() usage was added with commit 604785adc,
+   so I checked all the other changes in that commit
+   and they seem to be OK.
+
+3) remove unused 's' variable
+
+Upstream-Status: Pending
+
+Signed-off-by: Shan Hai <shan.hai at windriver.com>
+Signed-off-by: Jianchuan Wang <jianchuan.wang at windriver.com>
+---
+ lib/inet6.c | 21 ++++++++++-----------
+ 1 file changed, 10 insertions(+), 11 deletions(-)
+
+diff --git a/lib/inet6.c b/lib/inet6.c
+index 9a484a0..2a9c459 100644
+--- a/lib/inet6.c
++++ b/lib/inet6.c
+@@ -84,10 +84,9 @@ static int INET6_resolve(char *name, struct sockaddr_in6 *sin6)
+ #endif
+ 
+ 
+-static int INET6_rresolve(char *name, struct sockaddr_in6 *sin6, int numeric)
++static int INET6_rresolve(char *name, size_t namelen,
++			  struct sockaddr_in6 *sin6, int numeric)
+ {
+-    int s;
+-
+     /* Grmpf. -FvK */
+     if (sin6->sin6_family != AF_INET6) {
+ #ifdef DEBUG
+@@ -98,21 +97,20 @@ static int INET6_rresolve(char *name, struct sockaddr_in6 *sin6, int numeric)
+ 	return (-1);
+     }
+     if (numeric & 0x7FFF) {
+-	inet_ntop( AF_INET6, &sin6->sin6_addr, name, 80);
++	inet_ntop( AF_INET6, &sin6->sin6_addr, name, namelen);
+ 	return (0);
+     }
+     if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) {
+         if (numeric & 0x8000)
+-	    strcpy(name, "default");
++	    safe_strncpy(name, "default", namelen);
+ 	else
+-	    strcpy(name, "[::]");
++	    safe_strncpy(name, "[::]", namelen);
+ 	return (0);
+     }
+ 
+-    if ((s = getnameinfo((struct sockaddr *) sin6, sizeof(struct sockaddr_in6),
+-			 name, 255 /* !! */ , NULL, 0, 0))) {
+-	fputs("getnameinfo failed\n", stderr);
+-	return -1;
++    if (getnameinfo((struct sockaddr *) sin6, sizeof(struct sockaddr_in6),
++		    name, namelen , NULL, 0, 0)) {
++	inet_ntop( AF_INET6, &sin6->sin6_addr, name, namelen);
+     }
+     return (0);
+ }
+@@ -143,7 +141,8 @@ static char *INET6_sprint(struct sockaddr *sap, int numeric)
+ 
+     if (sap->sa_family == 0xFFFF || sap->sa_family == 0)
+ 	return safe_strncpy(buff, _("[NONE SET]"), sizeof(buff));
+-    if (INET6_rresolve(buff, (struct sockaddr_in6 *) sap, numeric) != 0)
++    if (INET6_rresolve(buff, sizeof(buff),
++		       (struct sockaddr_in6 *) sap, numeric) != 0)
+ 	return safe_strncpy(buff, _("[UNKNOWN]"), sizeof(buff));
+     return (fix_v4_address(buff, &((struct sockaddr_in6 *)sap)->sin6_addr));
+ }
+-- 
+1.8.5.2.233.g932f7e4
+
diff --git a/meta/recipes-extended/net-tools/net-tools_1.60-26.bb b/meta/recipes-extended/net-tools/net-tools_1.60-26.bb
index 759de0a..9c2adfa 100644
--- a/meta/recipes-extended/net-tools/net-tools_1.60-26.bb
+++ b/meta/recipes-extended/net-tools/net-tools_1.60-26.bb
@@ -15,6 +15,7 @@ SRC_URI = "http://snapshot.debian.org/archive/debian/20050312T000000Z/pool/main/
            file://net-tools-1.60-sctp1.patch \
            file://net-tools-1.60-sctp2-quiet.patch \
            file://net-tools-1.60-sctp3-addrs.patch \
+           file://0001-lib-inet6.c-INET6_rresolve-various-fixes.patch \
           "
 
 # for this package we're mostly interested in tracking debian patches,

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list