authorgravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2024-04-16 22:38:54+01:00
committergravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2024-04-17 13:41:26+01:00
log3c45a945285dff00d0eb8160342560bcb7d24cc5
tree14fe52e9fae68ad8853146e912422dff70e0c73e
parent03ad862197d27fb079d16cabdf2026da23aa2653
signaturelock-open Commit is signed but in an unrecognized format.

Value: fix out-of-bounds slice access writing zero-bit undef value

I have no idea why this wasn't being hit on master before.

1 files changed, 3 insertions(+), 1 deletions(-)

src/Value.zig+3-1
...@@ -469,7 +469,9 @@ pub fn writeToPackedMemory(...@@ -469,7 +469,9 @@ pub fn writeToPackedMemory(
469 const endian = target.cpu.arch.endian();469 const endian = target.cpu.arch.endian();
470 if (val.isUndef(mod)) {470 if (val.isUndef(mod)) {
471 const bit_size: usize = @intCast(ty.bitSize(mod));471 const bit_size: usize = @intCast(ty.bitSize(mod));
472 std.mem.writeVarPackedInt(buffer, bit_offset, bit_size, @as(u1, 0), endian);472 if (bit_size != 0) {
473 std.mem.writeVarPackedInt(buffer, bit_offset, bit_size, @as(u1, 0), endian);
474 }
473 return;475 return;
474 }476 }
475 switch (ty.zigTypeTag(mod)) {477 switch (ty.zigTypeTag(mod)) {