Re: [autofs] [PATCH] Fix non-IPv6 host name lookups (5.0.6)

2011-06-30 Thread Ian Kent
On Wed, 2011-06-29 at 11:39 -0300, Leonardo Chiquitto wrote:
 Fix non-IPv6 host name lookups
 
 Commit 5b083026 (fix ipv6 name for lookup) causes a regression
 in regular (non-IPv6) host name lookups: it trims the first host
 name character even when it's not a [. This patch fixes the issue.

Gaah  yep.

 
 ---
  modules/replicated.c |8 +---
  1 file changed, 5 insertions(+), 3 deletions(-)
 
 Index: autofs/modules/replicated.c
 ===
 --- autofs.orig/modules/replicated.c
 +++ autofs/modules/replicated.c
 @@ -1125,15 +1125,17 @@ static int add_host_addrs(struct host **
   }
   len = strlen(name);
  
 - if (name[0] == '['  name[--len] == ']')
 + if (name[0] == '['  name[--len] == ']') {
   name[len] = '\0';
 + memmove(name, name + 1, len);
 + }
  
   memset(hints, 0, sizeof(hints));
   hints.ai_flags = AI_NUMERICHOST;
   hints.ai_family = AF_UNSPEC;
   hints.ai_socktype = SOCK_DGRAM;
  
 - ret = getaddrinfo(name + 1, NULL, hints, ni);
 + ret = getaddrinfo(name, NULL, hints, ni);
   if (ret)
   goto try_name;
  
 @@ -1153,7 +1155,7 @@ try_name:
   hints.ai_family = AF_UNSPEC;
   hints.ai_socktype = SOCK_DGRAM;
  
 - ret = getaddrinfo(name + 1, NULL, hints, ni);
 + ret = getaddrinfo(name, NULL, hints, ni);
   if (ret) {
   error(LOGOPT_ANY, hostname lookup failed: %s,
 gai_strerror(ret));
 
 ___
 autofs mailing list
 autofs@linux.kernel.org
 http://linux.kernel.org/mailman/listinfo/autofs


___
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs


Re: [autofs] [PATCH] Fix non-IPv6 host name lookups (5.0.6)

2011-06-30 Thread Ian Kent
On Thu, 2011-06-30 at 14:37 +0800, Ian Kent wrote:
 On Wed, 2011-06-29 at 11:39 -0300, Leonardo Chiquitto wrote:
  Fix non-IPv6 host name lookups
  
  Commit 5b083026 (fix ipv6 name for lookup) causes a regression
  in regular (non-IPv6) host name lookups: it trims the first host
  name character even when it's not a [. This patch fixes the issue.
 
 Gaah  yep.
 
  
  ---
   modules/replicated.c |8 +---
   1 file changed, 5 insertions(+), 3 deletions(-)
  
  Index: autofs/modules/replicated.c
  ===
  --- autofs.orig/modules/replicated.c
  +++ autofs/modules/replicated.c
  @@ -1125,15 +1125,17 @@ static int add_host_addrs(struct host **
  }
  len = strlen(name);
   
  -   if (name[0] == '['  name[--len] == ']')
  +   if (name[0] == '['  name[--len] == ']') {
  name[len] = '\0';
  +   memmove(name, name + 1, len);
  +   }
   
  memset(hints, 0, sizeof(hints));
  hints.ai_flags = AI_NUMERICHOST;
  hints.ai_family = AF_UNSPEC;
  hints.ai_socktype = SOCK_DGRAM;
   
  -   ret = getaddrinfo(name + 1, NULL, hints, ni);
  +   ret = getaddrinfo(name, NULL, hints, ni);
  if (ret)
  goto try_name;
   
  @@ -1153,7 +1155,7 @@ try_name:
  hints.ai_family = AF_UNSPEC;
  hints.ai_socktype = SOCK_DGRAM;
   
  -   ret = getaddrinfo(name + 1, NULL, hints, ni);
  +   ret = getaddrinfo(name, NULL, hints, ni);
  if (ret) {
  error(LOGOPT_ANY, hostname lookup failed: %s,
gai_strerror(ret));
  

I'd prefer to avoid the use of memmove(3) though so I think this will
also fix it.

autofs-5.0.6 - fix ipv6 name for lookup fix

From: Ian Kent ik...@redhat.com

Fix an error in the recent ipv6 name for lookup patch.
---

 modules/replicated.c |   13 -
 1 files changed, 8 insertions(+), 5 deletions(-)


diff --git a/modules/replicated.c b/modules/replicated.c
index 7f2b892..a10a817 100644
--- a/modules/replicated.c
+++ b/modules/replicated.c
@@ -,7 +,8 @@ static int add_host_addrs(struct host **list, const char 
*host,
  unsigned int weight, unsigned int options)
 {
struct addrinfo hints, *ni, *this;
-   char *name = strdup(host);
+   char *n_ptr;
+   char *name = n_ptr = strdup(host);
int len;
char buf[MAX_ERR_BUF];
int rr = 0;
@@ -1125,15 +1126,17 @@ static int add_host_addrs(struct host **list, const 
char *host,
}
len = strlen(name);
 
-   if (name[0] == '['  name[--len] == ']')
+   if (name[0] == '['  name[--len] == ']') {
name[len] = '\0';
+   name++;
+   }
 
memset(hints, 0, sizeof(hints));
hints.ai_flags = AI_NUMERICHOST;
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_DGRAM;
 
-   ret = getaddrinfo(name + 1, NULL, hints, ni);
+   ret = getaddrinfo(name, NULL, hints, ni);
if (ret)
goto try_name;
 
@@ -1153,7 +1156,7 @@ try_name:
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_DGRAM;
 
-   ret = getaddrinfo(name + 1, NULL, hints, ni);
+   ret = getaddrinfo(name, NULL, hints, ni);
if (ret) {
error(LOGOPT_ANY, hostname lookup failed: %s,
  gai_strerror(ret));
@@ -1172,7 +1175,7 @@ try_name:
}
freeaddrinfo(ni);
 done:
-   free(name);
+   free(n_ptr);
return ret;
 }
 


___
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs


[autofs] [PATCH] Fix non-IPv6 host name lookups (5.0.6)

2011-06-29 Thread Leonardo Chiquitto
Fix non-IPv6 host name lookups

Commit 5b083026 (fix ipv6 name for lookup) causes a regression
in regular (non-IPv6) host name lookups: it trims the first host
name character even when it's not a [. This patch fixes the issue.

---
 modules/replicated.c |8 +---
 1 file changed, 5 insertions(+), 3 deletions(-)

Index: autofs/modules/replicated.c
===
--- autofs.orig/modules/replicated.c
+++ autofs/modules/replicated.c
@@ -1125,15 +1125,17 @@ static int add_host_addrs(struct host **
}
len = strlen(name);
 
-   if (name[0] == '['  name[--len] == ']')
+   if (name[0] == '['  name[--len] == ']') {
name[len] = '\0';
+   memmove(name, name + 1, len);
+   }
 
memset(hints, 0, sizeof(hints));
hints.ai_flags = AI_NUMERICHOST;
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_DGRAM;
 
-   ret = getaddrinfo(name + 1, NULL, hints, ni);
+   ret = getaddrinfo(name, NULL, hints, ni);
if (ret)
goto try_name;
 
@@ -1153,7 +1155,7 @@ try_name:
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_DGRAM;
 
-   ret = getaddrinfo(name + 1, NULL, hints, ni);
+   ret = getaddrinfo(name, NULL, hints, ni);
if (ret) {
error(LOGOPT_ANY, hostname lookup failed: %s,
  gai_strerror(ret));

___
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs