Use actual size for old allocation in ft_realloc.

Prevents crashes from improperly freed memory.

Fixes #19008, fixes #18950, fixes #18949.
This commit is contained in:
Matt Brubeck 2017-10-24 15:43:28 -07:00
parent 347176df25
commit 865e81749a

View file

@ -51,13 +51,13 @@ extern fn ft_free(mem: FT_Memory, ptr: *mut c_void) {
} }
} }
extern fn ft_realloc(mem: FT_Memory, old_size: c_long, new_req_size: c_long, extern fn ft_realloc(mem: FT_Memory, _old_size: c_long, new_req_size: c_long,
old_ptr: *mut c_void) -> *mut c_void { old_ptr: *mut c_void) -> *mut c_void {
let old_actual_size; let old_actual_size;
let mut vec; let mut vec;
unsafe { unsafe {
old_actual_size = usable_size(old_ptr as *const _); old_actual_size = usable_size(old_ptr as *const _);
let old_size = old_size as usize; let old_size = old_actual_size as usize;
vec = Vec::<u8>::from_raw_parts(old_ptr as *mut u8, old_size, old_size); vec = Vec::<u8>::from_raw_parts(old_ptr as *mut u8, old_size, old_size);
}; };