... | ... |
@@ -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 |
} |