memcpy와 gethostbyname에 대해서 질문입니다~
글쓴이: cb2531 / 작성시간: 수, 2005/04/13 - 3:19오후
unsigned int str_to_ip(char *ipaddress)
{
unsigned int ipval ;
struct hostent *host;
host = gethostbyname(ipaddress);
if (host != NULL)
memcpy(&ipval , host->h_addr_list[0],sizeof(unsigned int));
return ipval;
}
이런 함수를 짰는데요..
가끔 프로그램이 죽어서 코어 파일 bt를 해봤더니 앞쪽에
#0 0x4207c46c in memcpy () from /lib/i686/libc.so.6
#1 0x0808d07f in str_to_ip(char*) (
ipaddress=0xd10d7e8 "嗜c\rx\212\037\r680215869982:SRP12") at net.cc:1603
이런식으로 뜹니다.
전달된 ipaddress가 이상한 값이라고 해도
host에서 NULL 체크를 했으니깐 괜찮을테고..
혹시 host가 NULL이 아닌데
host->h_addr_list가 NULL일 경우가 발생할수 있나요?
아무튼 원인을 찾기 힘들어서 이렇게 질문을 올립니다..^^
Forums:
memcpy(&ipval , host->h_addr_list
memcpy(&ipval , host->h_addr_list[0],sizeof(unsigned int));
=>
memcpy(&ipval , &(host->h_addr_list[0]),sizeof(unsigned int));
^^ be cool ~
http://fromdj.pe.kr
댓글 달기