반응형
#include <iostream>
class S {
int c;
public:
int f(int i) const { return i + c; }
};
int f() {
S s;
return s.f(10);
}
int main(void) {
int val = f();
std::cout << val << std::endl;
}
- s.f(10) 호출할 떄 , c가 참조되는데 초기화되지 않았기 떄문에 메모리 릭이 생김.
- 스택 메모리의 잔여값이 저장됨.
#include <iostream>
class S {
public:
S() : mem(0), mem_size(0) { }
S(int mem_size) {
this->mem_size = mem_size;
if(mem_size > 0){
this->mem = new char[mem_size];
}
}
char *mem;
int mem_size;
};
int main(void){
S s(-1);
std::cout << s.mem << std::endl;
}
- 만약 mem_size에 음수가 전달되면 mem은 초기화되지 않기 때문에 스택에 있는 잔여 메모리가 쓰여짐.
반응형
'Security' 카테고리의 다른 글
[systemhacking] ELF 동적 디버깅 (0) | 2021.11.24 |
---|---|
[systemhacking] logical bugs (0) | 2021.11.23 |
[systemhacking] Buffer overflow c++ (0) | 2021.11.22 |
[systemhacking] Integer Issues (0) | 2021.11.22 |
[systemhacking] Memory corruption (0) | 2021.11.18 |