libsais hardening
diff --git a/src/libbz3.c b/src/libbz3.c
index 21d03d4..e24eb23 100644
--- a/src/libbz3.c
+++ b/src/libbz3.c
@@ -78,6 +78,7 @@ PUBLIC_API struct bz3_state * bz3_new(s32 block_size) {
bz3_state->swap_buffer = malloc(block_size + block_size / 50 + 32);
bz3_state->sais_array = malloc((block_size + 2) * sizeof(s32));
+ memset(bz3_state->sais_array, 0, sizeof(s32) * (block_size + 2));
bz3_state->lzp_lut = calloc(1 << LZP_DICTIONARY, sizeof(s32));
diff --git a/src/libsais.c b/src/libsais.c
index 39cce1e..5460502 100644
--- a/src/libsais.c
+++ b/src/libsais.c
@@ -5238,6 +5238,7 @@ static sa_sint_t libsais_unbwt_main(const u8 * T, u8 * U, sa_uint_t * P, sa_sint
sa_uint_t * RESTRICT bucket2 =
(sa_uint_t *)libsais_alloc_aligned(ALPHABET_SIZE * ALPHABET_SIZE * sizeof(sa_uint_t), 4096);
u16 * RESTRICT fastbits = (u16 *)libsais_alloc_aligned(((size_t)1 + (size_t)(n >> shift)) * sizeof(u16), 4096);
+ memset(fastbits, 0, ((size_t)1 + (size_t)(n >> shift)) * sizeof(u16));
sa_uint_t * RESTRICT buckets =
threads > 1 && n >= 262144
? (sa_uint_t *)libsais_alloc_aligned(
