ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Memory Leak
    Hack/Pwnable 2015. 6. 27. 08:26
    char* read_buffer(FILE *file, const int size)
    {
      int foo = 0;
      char* buf = (char*) malloc(size);
     
        if (buf == NULL)
        {
          return NULL;
        }
        if (fread(buf, 1u, size, file) != size)
        {
          return NULL;
        }
        return buf;
    }

    buf에서 malloc을통해 동적할당을 해준다.

    fread에서 읽기에 실패하면 NULL을 리턴하고, 그뒤에 return but;가 존재하는데
    여기서 malloc을 해줬지만 free를 해주지않았기에 메모리 릭이 발생한다.


    char *foo = (char *) malloc(100);
    char *bar = (char *) malloc(200);
    bar = foo;

    foo에선 100바이트크기로 동적할당을 해주었고, bar에는 200바이트를 할당해주었다.
    하지만 bar에 foo를 넣는다. 이렇게되면 200바이트 할당된 힙에 접근할수가없어 메모리릭이 발생한다.

    char* get_buffer(void)
    {
      return (char *)malloc(100);
    }
     
    void test_func()
    {
      get_buffer();
    }

    get_buffer엣는 100바이트 크기를 동적할당해준다. 하지만 test_func에선 함수호출만해줄뿐 받는 인자가 없기때문에 100바이트만큼의 힙에 접근이 불가해 메모리릭이 발생한다.



    [참고:http://story.wisedog.net/메모리-누수-memory-leak란/}



    'Hack > Pwnable' 카테고리의 다른 글

    Use After Free  (0) 2015.07.08
    ARM 공부  (0) 2015.07.04
    Windows BOF  (0) 2015.06.25
    stack canary for gcc  (0) 2015.06.24
    RTL(Return To Libc)  (0) 2015.06.24

    댓글

Designed by Tistory.