Selaa lähdekoodia

Patch add sys ftruncate and fix mem out of bounds error in realloc (#18)

* bugfix: realloc时,旧块长度计算错误导致的内存越界问题

* 增加ftruncate
LoGin 1 vuosi sitten
vanhempi
commit
26536e7fcd
2 muutettua tiedostoa jossa 3 lisäystä ja 5 poistoa
  1. 1 1
      src/platform/allocator/dragonos_malloc.rs
  2. 2 4
      src/platform/dragonos/mod.rs

+ 1 - 1
src/platform/allocator/dragonos_malloc.rs

@@ -68,7 +68,7 @@ pub unsafe fn realloc(ptr: *mut c_void, size: size_t) -> *mut c_void {
         return null_mut();
     }
 
-    let old_len = _dragonos_chunk_length(ptr);
+    let old_len = _dragonos_chunk_length(ptr) - 16;
 
     // 暴力实现
 

+ 2 - 4
src/platform/dragonos/mod.rs

@@ -223,8 +223,7 @@ impl Pal for Sys {
     }
 
     fn ftruncate(fildes: c_int, length: off_t) -> c_int {
-        // e(unsafe { syscall!(FTRUNCATE, fildes, length) }) as c_int
-        unimplemented!()
+        e(unsafe { syscall!(SYS_FTRUNCATE, fildes, length) }) as c_int
     }
 
     fn futex(addr: *mut c_int, op: c_int, val: c_int, val2: usize) -> c_int {
@@ -279,8 +278,7 @@ impl Pal for Sys {
     }
 
     fn getpagesize() -> usize {
-        // 4096
-        1024 * 1024 * 2
+        return 4096;
     }
 
     fn getpgid(pid: pid_t) -> pid_t {