Explorar o código

Proper check of the raw block owner of an allocation

Ioannis Koutras %!s(int64=13) %!d(string=hai) anos
pai
achega
b149280060
Modificáronse 1 ficheiros con 3 adicións e 2 borrados
  1. 3 2
      src/free.c

+ 3 - 2
src/free.c

@@ -46,8 +46,9 @@ void free(void *ptr) {
 
     current_raw_block = systemallocator.raw_block_head;
     while(current_raw_block) {
-        if((char *)ptr - (char *)(current_raw_block) -
-                sizeof(raw_block_header_t) < current_raw_block->size) {
+        if(((char *)ptr > (char *)current_raw_block) &&
+                ((char *)ptr < (char *)(current_raw_block) +
+                 current_raw_block->size)) {
             found = true;
             break;
         }