diff options
author | Thierry Vignaud <tv@mageia.org> | 2012-06-01 17:25:12 +0000 |
---|---|---|
committer | Thierry Vignaud <tv@mageia.org> | 2012-06-01 17:25:12 +0000 |
commit | 678075ce42f671b1ca356800607172a8b36925c1 (patch) | |
tree | a7603d7f46e83639b3b26f5ea356cb7ffa3c00ba | |
parent | c8efba7463a67209ecd1eae112e0ee7b437570fa (diff) | |
download | drakx-678075ce42f671b1ca356800607172a8b36925c1.tar drakx-678075ce42f671b1ca356800607172a8b36925c1.tar.gz drakx-678075ce42f671b1ca356800607172a8b36925c1.tar.bz2 drakx-678075ce42f671b1ca356800607172a8b36925c1.tar.xz drakx-678075ce42f671b1ca356800607172a8b36925c1.zip |
(mygethostbyaddr) switch from gethostbyaddr() to getnameinfo()
-rw-r--r-- | mdk-stage1/NEWS | 1 | ||||
-rw-r--r-- | mdk-stage1/dns.c | 19 |
2 files changed, 12 insertions, 8 deletions
diff --git a/mdk-stage1/NEWS b/mdk-stage1/NEWS index 0544949cb..e9eaabd8b 100644 --- a/mdk-stage1/NEWS +++ b/mdk-stage1/NEWS @@ -1,6 +1,7 @@ - do not advice long dead pcmcia.img & network.img images (mga#5466) - first attempt at supporting XenBlk discs - switch from gethostbyname() to getaddrinfo() (mga#4056) +- switch from gethostbyaddr() to getnameinfo() 1.65 - load btrfs module to mount btrfs diff --git a/mdk-stage1/dns.c b/mdk-stage1/dns.c index 05f21a14a..488b4844e 100644 --- a/mdk-stage1/dns.c +++ b/mdk-stage1/dns.c @@ -75,19 +75,22 @@ int mygethostbyname(char * name, struct in_addr * addr) char * mygethostbyaddr(char * ipnum) { - struct in_addr in; - struct hostent * host; + struct sockaddr_in sa; + char hbuf[NI_MAXHOST]; /* prevent from timeouts */ if (_res.nscount == 0) return NULL; + + memset(&sa, 0, sizeof sa); + sa.sin_family = AF_INET; - if (!inet_aton(ipnum, &in)) - return NULL; - host = gethostbyaddr(&(in.s_addr), sizeof(in.s_addr) /* INADDRSZ */, AF_INET); - if (host && host->h_name) - return host->h_name; - return NULL; + if (inet_pton(AF_INET, ipnum, &sa.sin_addr) != 1) + return NULL; + + if (getnameinfo((struct sockaddr*)&sa, sizeof(sa), hbuf, sizeof(hbuf), NULL, 0, 0 |NI_NAMEREQD) == 0) //NI_NUMERICHOST NI_NAMEREQD + return strdup(hbuf); + else return NULL; } #elif defined(__GLIBC__) |