C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[69960] Re:memcpy_s 질문드립니다
박우성 [solgari] 6872 읽음    2013-08-09 09:25
C++빌더에서도 보안 관련 함수를 지원합니다.
제가 가지고 있는 2010 이나 XE 버전 에서 지원되는 것을 확인했으며, 그 이 후 버전은 모두 지원할 겁니다.

문의 주신 memcpy_s의 경우 C++빌더에서는 VC++와는 다르게 리턴형이 error_t형이 아니라 void *형입니다.
다음과 같이 사용하면 VC++와 C++빌더에 호환성을 가질 것입니다.

if( memcpy_s(dest, sizeof(dest), src, sizeof(src) ) ){
  //정상
}else{
  //오류
}


주의하실것은 단순변수나 배열과 같이 크기가 고정인 경우에는 sizeof연산자를 사용하면 되지만, 동적으로 할당받은 경우에는  sizeof연산자를 사용하면 안 됩니다. 할당된 메모리의 크기를 입력해야합니다.

다음 함수들은 C++빌더에서 지원하는 보안 함수입니다. 기존 함수대신 사용하는 것을 적극 추천해 드립니다.
이런 함수를 사용하면, 찾기 힘든 버그나 보안 관련 문제를 미연에 방지할 수 있습니다.


Secure C Library
-----------------------------------------------------
stdio.h
-----------------------------------------------------
Input/output Routines
    * tmpfile_s
    * tmpnam_s

File access functions
    * fopen_s
    * freopen_s

Formatted input/output functions
    * fprintf_s, fwprintf_s
    * fscanf_s, fwscanf_s
    * printf_s, wprintf_s
    * scanf_s, wscanf_s
    * snprintf_s, snwprintf_s
    * sprintf_s, swprintf_s
    * sscanf_s, swscanf_s
    * vfprintf_s, vfwprintf_s
    * vfscanf_s, vfwscanf_s
    * vprintf_s, vwprintf_s
    * vscanf_s, vwscanf_s
    * vsnprintf_s, vsnwprintf_s
    * vsprintf_s, vswprintf_s
    * vsscanf_s, vswscanf_s

Character input/output functions
    * gets_s

-----------------------------------------------------
stdlib.h
-----------------------------------------------------
Runtime-constraint handling
    * set_constraint_handler_s
    * abort_handler_s
    * ignore_handler_s

Communication with the environment
    * getenv_s, wgetenv_s

Searching and sorting utilities
    * bsearch_s
    * qsort_s

-----------------------------------------------------
string.h
-----------------------------------------------------
Copying functions
    * memcpy_s
    * memmove_s
    * strcpy_s, wcscpy_s
    * strncpy_s, wcsncpy_s

Concatenation functions
    * strcat_s, wcscat_s
    * strncat_s, wcsncat_s

Search functions
    * strtok_s, wcstok_s

Miscellaneous functions
    * strerror_s, _wcserror_s
    * strerrorlen_s

-----------------------------------------------------
time.h
-----------------------------------------------------
Time conversion functions
    * asctime_s, wasctime_s
    * ctime_s, wctime_s
    * gmtime_s
    * localtime_s



질문고수 님이 쓰신 글 :
: c표준에서 memcpy()는 쓰지말고 보안상 더 좋은 memcpy_s()를 사용하라라고 들었습니다
:
: 그래서 memcpy()로 짜여져 있는 소스를 memcpy_s()로 치환하고 있는데
:
: 의외로 어떻게 바꿔야 하는지 명확하게 정리된 사이트가 없어서 이곳에 질문합니다.
:
: 아래형식과 같이 변경 하면 될까요?
:
:
: 이것을 memcpy(dest,src,sizeof(src));
:
: 이것과 같이 errno_t e = memcpy_s(dest, sizeof(dest), src, sizeof(src));
:
: 고수님들의 조언 부탁드립니다

+ -

관련 글 리스트
69953 memcpy_s 질문드립니다 질문고수 4491 2013/08/08
69960     Re:memcpy_s 질문드립니다 박우성 6872 2013/08/09
69957     Re:memcpy_s 질문드립니다 Intotheblue 5774 2013/08/08
69958         Re:Re:memcpy_s 질문드립니다 질문고수 5657 2013/08/08
69959             Re:Re:Re:memcpy_s 질문드립니다 Intotheblue 5989 2013/08/08
69961                 Re:Re:Re:Re:memcpy_s 질문드립니다 송신영 6355 2013/08/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.