26. Pointer Passed When a
Handle Was Expected
• 잘못된 함수 사용으로 메모리가 해제되거나, 재할당
되어야 하는 시도가 실패했을 때, 별도의 처리가 없는
경우
• GlobalAlloc 관련 함수들처럼 포인터 대신 핸들을 사
용하는 함수는 함수 레퍼런스를 충분히 숙지
27. Pointer Not at the Beginning
of the Allocated Block
• 할당된 메모리 포인터의 위치를 입력으로 받는 함수
에 증감된 위치의 포인터를 넘기는 경우
30. 결론
• Overflowing a heap buffer is extremely dangerous
• 항상 예측 가능해야 한다
모든 경우를 대비한다
• 집중력이 떨어진 상태에서 코딩하지 않는다
31. 생략한 이슈들
• Destroying Process Heap
• Freed Handle Is Still Locked
• Function Refers to a Zero Length
Block
• Handle Is Already Unlocked
• Inefficient Use of
GlobalAlloc/LocalAlloc
• Nonzero Lock Count