Notice
Recent Posts
목록2017/04 (1)
#dokydoky
[C++] Double free example
Double free 취약코드 struct P {}; class C { P *p; public: C(P *p) : p(p) {} ~C() { delete p; } void f() {} }; void g(C c) { c.f(); } void main() { P *p = new P; C c(p); g(c); } g()의 매개변수 타입을 reference로 변경해주면 되지만, 근본적으로 이런 실수가 발생하지 않게 복사 생성자와 대입 연산자를 삭제한다. 이 경우 g()함수의 매개변수가 reference 타입이 아니면 컴파일 에러가 발생하여 컴파일 타임에 오류를 확인할 수 있다. struct P {}; class C { P *p; public: C(P *p) : p(p) {} C(const C&) = delete..
Secure Coding
2017. 4. 7. 12:38