diff options
| author | amelia squires <[email protected]> | 2025-04-21 20:43:51 -0500 |
|---|---|---|
| committer | amelia squires <[email protected]> | 2025-04-21 20:43:51 -0500 |
| commit | af975d63f67e6cc2d17f1804acb66328905f8701 (patch) | |
| tree | ab23744e784044d29cc73cd1da4070011e7e858c /src/hash/sha01.c | |
| parent | b2ee662b4621282b137a2a2cf1be13bd60073c5a (diff) | |
better version support, fixes, and memory saftey
Diffstat (limited to 'src/hash/sha01.c')
| -rw-r--r-- | src/hash/sha01.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/hash/sha01.c b/src/hash/sha01.c index 1711faa..f5478dd 100644 --- a/src/hash/sha01.c +++ b/src/hash/sha01.c @@ -23,10 +23,16 @@ struct sha01_hash sha01_init(uint8_t ver){ return a;
}
+int sha01_free_l(lua_State* L){
+ struct sha01_hash* h = lua_touserdata(L, -1);
+ free(h->buffer);
+ return 0;
+}
+
struct sha01_hash sha01_init_l(uint8_t ver, lua_State* L){
struct sha01_hash a = {.h0 = 0x67452301, .h1 = 0xEFCDAB89, .h2 = 0x98BADCFE, .h3 = 0x10325476, .h4 = 0xC3D2E1F0,
.total = 0, .bufflen = 0, .version = ver};
- a.buffer = lua_newuserdata(L, sizeof * a.buffer * bs);
+ a.buffer = calloc(sizeof * a.buffer, bs);
memset(a.buffer, 0, bs);
return a;
}
@@ -182,7 +188,7 @@ lua_common_hash_clone_oargs(sha1, sha1, l_sha1_init(L), { memcpy(b->buffer, a->buffer, bs * sizeof * b->buffer);
});
-lua_common_hash_init_ni(sha1, sha1, sha01_init_l(1, L));
+lua_common_hash_init_ni(sha1, sha1, sha01_init_l(1, L), sha01_free_l);
lua_common_hash_update(sha1, sha1);
//common_hash_clone(sha0);
@@ -192,7 +198,7 @@ lua_common_hash_clone_oargs(sha0, sha0, l_sha0_init(L), { b->buffer = old;
memcpy(b->buffer, a->buffer, bs * sizeof * b->buffer);
});
-lua_common_hash_init_ni(sha0, sha0, sha01_init_l(0, L));
+lua_common_hash_init_ni(sha0, sha0, sha01_init_l(0, L), sha01_free_l);
lua_common_hash_update(sha0, sha0);
int l_sha1_final(lua_State* L){
|
