Browse code

socklib: fix ipv4_genip

Dario Rodriguez authored on 19/06/2014 16:43:52
Showing 1 changed files
... ...
@@ -65,12 +65,16 @@ ipv4_genip(char *hostname, long *resulthostsize)
65 65
         if(getaddrinfo(hostname,NULL,&hints,&ai)!=0)
66 66
                 return(NULL);
67 67
         in=(struct sockaddr_in *)ai->ai_addr;
68
-        if(in==NULL || (host=malloc(ai->ai_addrlen))==NULL) {
68
+        if(in->sin_family!=AF_INET) {
69 69
                 freeaddrinfo(ai),ai=NULL;
70 70
                 return(NULL);
71 71
         }
72
-        memcpy(host,ai->ai_addr,ai->ai_addrlen);
73
-        *resulthostsize=ai->ai_addrlen;
72
+        *resulthostsize=4;
73
+        if(in==NULL || (host=malloc(*resulthostsize))==NULL) {
74
+                freeaddrinfo(ai),ai=NULL;
75
+                return(NULL);
76
+        }
77
+        memcpy(host,&(in->sin_addr),*resulthostsize);
74 78
         freeaddrinfo(ai),ai=NULL;
75 79
         return(host);
76 80
 }