Security

[systemhacking] Uninitialized value

이무쿤 2021. 11. 22. 20:52
반응형
#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은 초기화되지 않기 때문에 스택에 있는 잔여 메모리가 쓰여짐.

 

 

반응형