|  | @@ -1846,6 +1846,7 @@ int gethostbyname_r(const char * name,
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  	struct in_addr *in;
 | 
	
		
			
				|  |  |  	struct in_addr **addr_list;
 | 
	
		
			
				|  |  | +	char **alias;
 | 
	
		
			
				|  |  |  	unsigned char *packet;
 | 
	
		
			
				|  |  |  	struct resolv_answer a;
 | 
	
		
			
				|  |  |  	int i;
 | 
	
	
		
			
				|  | @@ -1899,17 +1900,27 @@ int gethostbyname_r(const char * name,
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	addr_list[0] = in;
 | 
	
		
			
				|  |  |  	addr_list[1] = 0;
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if (buflen < sizeof(char *)*(ALIAS_DIM))
 | 
	
		
			
				|  |  | +		return ERANGE;
 | 
	
		
			
				|  |  | +	alias=(char **)buf;
 | 
	
		
			
				|  |  | +	buf+=sizeof(char **)*(ALIAS_DIM);
 | 
	
		
			
				|  |  | +	buflen-=sizeof(char **)*(ALIAS_DIM);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	if (buflen<256)
 | 
	
		
			
				|  |  |  		return ERANGE;
 | 
	
		
			
				|  |  |  	strncpy(buf, name, buflen);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	alias[0] = buf;
 | 
	
		
			
				|  |  | +	alias[1] = NULL;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	/* First check if this is already an address */
 | 
	
		
			
				|  |  |  	if (inet_aton(name, in)) {
 | 
	
		
			
				|  |  |  	    result_buf->h_name = buf;
 | 
	
		
			
				|  |  |  	    result_buf->h_addrtype = AF_INET;
 | 
	
		
			
				|  |  |  	    result_buf->h_length = sizeof(*in);
 | 
	
		
			
				|  |  |  	    result_buf->h_addr_list = (char **) addr_list;
 | 
	
		
			
				|  |  | +	    result_buf->h_aliases = alias;
 | 
	
		
			
				|  |  |  	    *result=result_buf;
 | 
	
		
			
				|  |  |  	    *h_errnop = NETDB_SUCCESS;
 | 
	
		
			
				|  |  |  	    return NETDB_SUCCESS;
 | 
	
	
		
			
				|  | @@ -1954,6 +1965,10 @@ int gethostbyname_r(const char * name,
 | 
	
		
			
				|  |  |  			result_buf->h_addrtype = AF_INET;
 | 
	
		
			
				|  |  |  			result_buf->h_length = sizeof(*in);
 | 
	
		
			
				|  |  |  			result_buf->h_addr_list = (char **) addr_list;
 | 
	
		
			
				|  |  | +#ifdef __UCLIBC_MJN3_ONLY__
 | 
	
		
			
				|  |  | +#warning TODO -- generate the full list
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +			result_buf->h_aliases = alias; /* TODO: generate the full list */
 | 
	
		
			
				|  |  |  			free(packet);
 | 
	
		
			
				|  |  |  			break;
 | 
	
		
			
				|  |  |  		} else {
 |