ftp 메세지 가져오는 코드인데 자꾸만 배열 값이 남아 잇는데 어
글쓴이: babonara / 작성시간: 일, 2003/03/23 - 10:28오후
ftp 메세지 가져오는 코드인데 자꾸만 배열 값이 남아 잇는데 어떻게 비워야 할까요?
int FTP_Recv_Msg_Code(int Ftp_Num,int *Ftp_Code) { int Msg_Length; char *Msg,buf,test[FTP_RECV_MSG]; Msg=(char *)test; while(1) { recv(Ftp_Num,&buf,1,0); if(buf == 0x0d) { continue; } else if(buf == 0x0a) { break; } *Msg=buf; Msg++; } *Ftp_Code=(test[0]-'0')*100+(test[1]-'0')*10+(test[2]-'0'); printf("%s\n",test); return (*Ftp_Code); }
어떻게 비우면 될까요?
test 값이 남아 있습니다 ㅠㅜㅜ
Forums:
배열 test 말인가요?return하기전에..memset
배열 test 말인가요?
return하기전에..
memset( tes, 0, sizeof test);
라고 해주시면 안되나요?
---
http://coolengineer.com
감사 합니다.
덕 분에 잘 처리 됬습니다.
감사 드립니다.
고운 하루 되시길... ^^
한줄씩 읽으면 되죠? ^^;C 문자열 종료 문자를 빠트리셨네요.
한줄씩 읽으면 되죠? ^^;
C 문자열 종료 문자를 빠트리셨네요.
break 전이나 while 문 끝나는 부분에
추가 하시든지
아니면 test 선언할 때 = { 0, } 하시면 되겠습니다.
그럼, 이만...
소스 바꿔보기>
위의 소스에서 memset을 해도 취약점
:recv 함수 자체에 대한 에러 정의가 되어 있지 않다. ( 에러가 났을 경우
string over 가 생겨 해당 문자열이 test 문자열에서 벗어나서 검출될때까지
돌아다닌다. )
이렇게 프로그램 짜두 원하는 값을 얻을수는 있지만, 연결이 끊어진 상태에서
리턴 코드를 조작하는 행위는 심각한 오류를 만들어 낼 수도 있음.
댓글 달기