RAD Studio에는 memcpy_s 가 포함되어있네요..
참고 :
http://docwiki.embarcadero.com/RADStudio/XE4/en/Memcpy_s
Intotheblue 님이 쓰신 글 :
: 제가 알기론 표준함수 대부분이 이런저런 문제점들을 가지고 있는걸로 압니다.
: 그 부분이 치명적일 수도 있고 아닐수도 있죠.
:
: memcpy 에 대해서 찾아보니 아래와 같은 내용이 나오네요.
:
:
: 보안 주의 사항
:
: 첫째 인수인 dest는 src의 총 count 바이트를 보관할 수 있을 만큼 커야 합니다. 그렇지 않으면 버퍼 오버런이 발생합니다. 그러면 액세스 위반이 발생할 경우 응용 프로그램에 대한 서비스 공격을 거부하거나 최악의 경우 공격자가 프로세스에 실행 코드를 삽입할 수 있습니다. dest가 스택 기반 버퍼일 경우 특히 그렇습니다. 마지막 인수 count는 dest의 크기가 아니라 dest에 복사할 바이트 수임에 유의하십시오.
:
: 다음 코드 예제는 안전하게 memcpy()를 사용하는 방법을 보여 줍니다.
:
: void test(char *pbData, unsigned int cbData) {
: char buf[BUFFER_SIZE];
: memcpy(buf, pbData, min(cbData,BUFFER_SIZE));
: }
:
: 내용을 보면 사이즈만 정확히 맞춰 주면 문제가 없는겁니다.
:
: 이런건 간단한 검색만으로도 나옵니다.
:
:
:
: 질문고수 님이 쓰신 글 :
: : memcpy()함수는 보안상 취약점이 있어 사용하지 말고
: :
: : memcpy_s()함수는 빌더에서는 사용못한다면
: :
: : 어떻게 하는게 가장 좋은방법일까요..그냥 그대로 둬도 괜찮은지..
: :
: : Intotheblue 님이 쓰신 글 :
: : : 인터넷을 뒤져보니.
: : :
: : : vc++용 함수인것 같네요..
: : :
: : : 빌더 2007 에서는 헬프를 봐도 안나오고요...
: : :
: : :
: : : 질문고수 님이 쓰신 글 :
: : : : c표준에서 memcpy()는 쓰지말고 보안상 더 좋은 memcpy_s()를 사용하라라고 들었습니다
: : : :
: : : : 그래서 memcpy()로 짜여져 있는 소스를 memcpy_s()로 치환하고 있는데
: : : :
: : : : 의외로 어떻게 바꿔야 하는지 명확하게 정리된 사이트가 없어서 이곳에 질문합니다.
: : : :
: : : : 아래형식과 같이 변경 하면 될까요?
: : : :
: : : :
: : : : 이것을 memcpy(dest,src,sizeof(src));
: : : :
: : : : 이것과 같이 errno_t e = memcpy_s(dest, sizeof(dest), src, sizeof(src));
: : : :
: : : : 고수님들의 조언 부탁드립니다