From 3c2aab1e1f048412732d34912b4665f735e93b01 Mon Sep 17 00:00:00 2001 From: ame Date: Thu, 11 Apr 2024 19:46:15 -0500 Subject: fix some leaks --- src/hash/blake.c | 8 ++++++++ src/hash/md5.c | 1 + src/hash/sha01.c | 2 ++ src/hash/sha2-256.c | 5 +++++ 4 files changed, 16 insertions(+) (limited to 'src') diff --git a/src/hash/blake.c b/src/hash/blake.c index 096c951..bd73cef 100644 --- a/src/hash/blake.c +++ b/src/hash/blake.c @@ -253,12 +253,16 @@ void blake256(char *out, char *in, uint64_t inlen){ struct blake256_hash a = blake256_init(); blake256_update((uint8_t*)in, inlen, &a); blake256_final(&a, out); + free(a.buffer); + free(a.hash); } void blake224(char *out, char *in, uint64_t inlen){ struct blake224_hash a = blake224_init(); blake224_update((uint8_t*)in, inlen, &a); blake224_final(&a, out); + free(a.buffer); + free(a.hash); } #define blake_round_512(a,b,c,d,e) \ @@ -449,6 +453,8 @@ void blake512(uint8_t* in, size_t len, char* out){ struct blake512_hash a = blake512_init(); blake512_update(in, len, &a); blake512_final(&a, out); + free(a.buffer); + free(a.hash); } void blake384_final(struct blake384_hash* hash, char* out_stream){ @@ -474,6 +480,8 @@ void blake384(uint8_t* in, size_t len, char* out){ struct blake384_hash a = blake384_init(); blake384_update(in, len, &a); blake384_final(&a, out); + free(a.buffer); + free(a.hash); } int l_blake256_clone(lua_State* L){ diff --git a/src/hash/md5.c b/src/hash/md5.c index 26f89e2..9dd4612 100644 --- a/src/hash/md5.c +++ b/src/hash/md5.c @@ -151,6 +151,7 @@ void md5(uint8_t* input, size_t len, char out_stream[64]){ struct md5_hash aa = md5_init(); md5_update(input, len, &aa); md5_final(&aa, out_stream); + free(aa.buffer); } int l_md5(lua_State* L){ diff --git a/src/hash/sha01.c b/src/hash/sha01.c index dffe690..d382465 100644 --- a/src/hash/sha01.c +++ b/src/hash/sha01.c @@ -164,12 +164,14 @@ void sha0(uint8_t* a, size_t len, char* out_stream){ struct sha01_hash aa = sha0_init(); sha0_update(a, len, &aa); sha0_final(&aa, out_stream); + free(aa.buffer); } void sha1(uint8_t* a, size_t len, char* out_stream){ struct sha01_hash aa = sha1_init(); sha1_update(a, len, &aa); sha1_final(&aa, out_stream); + free(aa.buffer); } common_hash_clone(sha1); diff --git a/src/hash/sha2-256.c b/src/hash/sha2-256.c index 69029bf..6086fd7 100644 --- a/src/hash/sha2-256.c +++ b/src/hash/sha2-256.c @@ -211,12 +211,14 @@ void sha512(uint8_t* in, size_t len, char* out){ struct sha512_hash a = sha512_init(); sha512_update(in, len, &a); sha512_final(&a, out); + free(a.buffer); } void sha384(uint8_t* in, size_t len, char* out){ struct sha512_hash a = sha384_init(); sha384_update(in, len, &a); sha384_final(&a, out); + free(a.buffer); } void sha512_t(uint8_t* in, size_t len, int t, char* out){ @@ -224,7 +226,9 @@ void sha512_t(uint8_t* in, size_t len, int t, char* out){ sha512_update(in, len, &a); sha512_final(&a, out); out[t/4] = '\0'; + free(a.buffer); } + struct iv sha_iv_gen(int i){ struct iv oh = {.h0 = sha512_iv.h0 ^ 0xa5a5a5a5a5a5a5a5, .h1 = sha512_iv.h1 ^ 0xa5a5a5a5a5a5a5a5, .h2 = sha512_iv.h2 ^ 0xa5a5a5a5a5a5a5a5, .h3 = sha512_iv.h3 ^ 0xa5a5a5a5a5a5a5a5, .h4 = sha512_iv.h4 ^ 0xa5a5a5a5a5a5a5a5, .h5 = sha512_iv.h5 ^ 0xa5a5a5a5a5a5a5a5, @@ -236,6 +240,7 @@ struct iv sha_iv_gen(int i){ struct sha512_hash a = sha512_t_init(oh); sha512_update(in, strlen((char*)in), &a); _sha512_t_final(&a); + free(a.buffer); return (struct iv){.h0 = a.h0, .h1 = a.h1, .h2 = a.h2, .h3 = a.h3, .h4 = a.h4, .h5 = a.h5, .h6 = a.h6, .h7 = a.h7}; } -- cgit v1.2.3