fix out-of-bounds write

This commit is contained in:
Folkert 2020-11-20 20:47:16 +01:00
parent 898a140f64
commit 1070b5c4b2

View file

@ -32,19 +32,21 @@ const RocStr = struct {
var index : u8 = 0; var index : u8 = 0;
// Zero out the data, just to be safe // Zero out the data, just to be safe
while (index < rocStrSize) { while (index < rocStrSize) {
var offset_ptr = @intToPtr(*usize, target_ptr + index); var offset_ptr = @intToPtr(*u8, target_ptr + index);
offset_ptr.* = 0; offset_ptr.* = 0;
index += 1; index += 1;
} }
index = 0; index = 0;
while (index < len) { while (index < len) {
var offset_ptr = @intToPtr(*usize, target_ptr + index); var offset_ptr = @intToPtr(*u8, target_ptr + index);
offset_ptr.* = bytes[index]; offset_ptr.* = bytes[index];
index += 1; index += 1;
} }
const final_byte_ptr = @intToPtr(*usize, target_ptr + rocStrSize - 1);
final_byte_ptr.* = len ^ 0b10000000; // set the final byte to be the length
const final_byte_ptr = @intToPtr(*u8, target_ptr + rocStrSize - 1);
final_byte_ptr.* = @truncate(u8, len) ^ 0b10000000;
return ret_small_str; return ret_small_str;
} else { } else {