"% s"대신 "% 1024s"를 사용하면 보안 구멍이 코드에서 만들어지지 않습니다. "% 1024s"과 (과) "% s"의 차이점은 무엇입니까?% s와 % 1024 사이의 차이
답변
scanf()
에는 아마도?
So you can and you should read its man page.
는 기본적 %1024s
는, 문자열의 길이가 1,024 문자 피주 최대화 그것이 1,025 바이트 길이 버퍼 (0 종결 1024 + 1)에 항상 맞 그래서. %s
에는이 제한이 없으므로 버퍼가 문자열 scanf()
이 내부에 넣으려는 것보다 작 으면 버퍼 오버런이 발생하고 프로그램에서 정의되지 않은 동작을 호출합니다.
2013 POSIX 버전의 링크가 업데이트되었습니다. 공개되었지만 사이트가 너무 가볍게 구성되어 찾기가 어렵습니다. @larsmans 감사합니다. –
내가 연계 한 것은 첫 번째 Google 히트 곡이었습니다. –
' "% 1024s"'를 사용하려면 1025 자의 공백이있는 배열이 필요합니다. '\ 0'종료는 1024 내에서 카운트되지 않지만 모든 aray에 기록됩니다. – pmg
- 1. C에서 char []와 char * 사이의 차이
- 2. 선택 1024 * 1024 * 1024 * 1024가 실패합니다.
- 3. $ .each와 each() 사이의 차이
- 4. 숫자 사이의 최소 차이
- 5. JTables 사이의 큰 차이
- 6. 이미지 사이의 차이 찾기
- 7. Serilog : {..} 사이의 차이 {@ ..}
- 8. Swift에서 nil과() 사이의 차이
- 9. 두 예외 사이의 차이
- 10. 두 쿼터니온 사이의 '차이'
- 11. registerColumnType과 registerHibernateType 사이의 차이
- 12. 차이 둘 사이의 구현
- 13. System.out.printf와 String.format 사이의 차이
- 14. 초기화 사이의 차이 :
- 15. 사이의 차이 (x)는
- 16. CMake : $ {} 사이의 차이 "$ {}"
- 17. 출력 사이의 차이
- 18. 두 클러스터 사이의 차이
- 19. $ @와 $ 사이의 차이! perl
- 20. 크기를 압축하는 방법 1024 * 1024 * 1024 * 4 희소 배열
- 21. intent.setClass()와 intent.setComponent() 사이의 차이
- 22. 이벤트 사이의 날짜 차이 알아보기
- 23. 0에서 0.0 사이의 C++ 차이
- 24. 사이의 차이 || 및 || =이 상황
- 25. 두 요소 사이의 최대 차이
- 26. 자바에서 두 번 사이의 차이
- 27. 사이의 차이)에 대한 단편
- 28. emacs에서 프레임과 창 사이의 차이
- 29. .items()와 .keys() 사이의 차이
- 30. 배열의 값 사이의 차이 얻기
이 예방에 도움이됩니다. http://en.wikipedia.org/wiki/Stack_buffer_overflow –
바로 '%'와 's' 사이에 숨겨진 보안 구멍이 있습니다. 그것을 연결하려면 정확히 4 바이트가 필요합니다. –