aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoramy <[email protected]>2026-05-07 01:25:27 -0500
committerGitHub <[email protected]>2026-05-07 01:25:27 -0500
commit215a31d4eef417e1f6a29fba23eab830f7630634 (patch)
treea4f3eee382b9e083dbdea5f9597ff8e4020df4e2 /src
parent5aa3f628e4e7a74800cdeb9452875edb62c03d63 (diff)
parentddc618791543a4acf804151b3757faf4f6c9b7b2 (diff)
Merge pull request #9 from stilic/state-copy-changes
add 32bit support
Diffstat (limited to 'src')
-rw-r--r--src/hash/sha2-256.c23
-rw-r--r--src/net.c10
-rw-r--r--src/net.h2
-rw-r--r--src/net/lua.c3
-rw-r--r--src/net/util.c2
-rw-r--r--src/net/websocket.c2
-rw-r--r--src/thread.c3
7 files changed, 23 insertions, 22 deletions
diff --git a/src/hash/sha2-256.c b/src/hash/sha2-256.c
index 06841c5..1b8acb3 100644
--- a/src/hash/sha2-256.c
+++ b/src/hash/sha2-256.c
@@ -22,15 +22,6 @@ const uint64_t k[80] = {0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b
0x113f9804bef90dae, 0x1b710b35131c471b, 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc,
0x431d67c49c100d4c, 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817};
-void endian_swap128(__uint128_t *x){
- uint8_t *y = (uint8_t*)x;
- for (size_t low = 0, high = sizeof(__uint128_t) - 1; high > low; low++, high--){
- y[low] ^= y[high];
- y[high] ^= y[low];
- y[low] ^= y[high];
- }
-}
-
void endian_swap64(uint64_t *x){
uint8_t *y = (uint8_t*)x;
for (size_t low = 0, high = sizeof(uint64_t) - 1; high > low; low++, high--){
@@ -168,9 +159,17 @@ void _sha512_t_final(struct sha512_hash* hash){
memset(hash->buffer, 0, bs);
}
- __uint128_t bigL = hash->total*8;
- endian_swap128(&bigL);
- memcpy(&hash->buffer[128 - sizeof(__uint128_t)], &bigL, sizeof(__uint128_t));
+ uint64_t total = hash->total;
+ uint64_t bit_len_high = total >> 61;
+ uint64_t bit_len_low = total << 3;
+
+ uint64_t be_high = bit_len_high;
+ uint64_t be_low = bit_len_low;
+ endian_swap64(&be_high);
+ endian_swap64(&be_low);
+
+ memcpy(&hash->buffer[128 - 16], &be_high, 8);
+ memcpy(&hash->buffer[128 - 8], &be_low, 8);
sha512_round(hash);
}
diff --git a/src/net.c b/src/net.c
index 98cdf52..5082c26 100644
--- a/src/net.c
+++ b/src/net.c
@@ -197,7 +197,7 @@ int i_ws_write(lua_State* L){
lua_gettable(L, 1);
struct net_data* data = lua_touserdata(L, -1);
- uint64_t clen;
+ size_t clen;
const char* content = luaL_tolstring(L, 2, &clen);
str* send_data = str_init("");
@@ -250,7 +250,7 @@ int i_ws_close(lua_State* L){
#define BUFFER_LEN 16384
int l_wss(lua_State* L){
- uint64_t len = 0;
+ size_t len;
char* request_url = (char*)lua_tolstring(L, 1, &len);
struct url awa = parse_url(request_url, len);
if(awa.proto != NULL && strcmp(awa.proto->c, "ws") == 0){
@@ -414,7 +414,7 @@ int l_request(lua_State* L){
ssize_t _request_read(struct request_state* state, void* buffer, size_t count){
if(state->secure){
- uint64_t len;
+ size_t len;
if(SSL_read_ex(state->ssl, buffer, count, &len) == 0)
return 0;
return len;
@@ -425,7 +425,7 @@ ssize_t _request_read(struct request_state* state, void* buffer, size_t count){
ssize_t _request_write(struct request_state* state, const void* buffer, size_t count){
if(state->secure){
- uint64_t len;
+ size_t len;
if(SSL_write_ex(state->ssl, buffer, count, &len) == 0)
return 0;
return len;
@@ -437,7 +437,7 @@ ssize_t _request_write(struct request_state* state, const void* buffer, size_t c
int _request(lua_State* L, struct request_state* state){
int params = lua_gettop(L);
- uint64_t ilen = 0;
+ size_t ilen;
char* request_url = (char*)lua_tolstring(L, 1, &ilen);
struct url awa = parse_url(request_url, ilen);
if(awa.proto != NULL && strcmp(awa.proto->c, "http") == 0){
diff --git a/src/net.h b/src/net.h
index 75c2515..79f3c38 100644
--- a/src/net.h
+++ b/src/net.h
@@ -48,7 +48,7 @@ static const luaL_Reg net_function_list [] = {
};
extern char* _mimetypes;
-extern uint64_t _mimetypes_len;
+extern size_t _mimetypes_len;
static struct config net_config[] = {
{.name = "mimetypes", .type = c_string, .value = {.c_string = &_mimetypes, .len = &_mimetypes_len}},
diff --git a/src/net/lua.c b/src/net/lua.c
index 50d050a..ffa10c4 100644
--- a/src/net/lua.c
+++ b/src/net/lua.c
@@ -279,7 +279,8 @@ int l_connection_upgrade(lua_State* L){
int req_idx = 2;
lua_getfield(L, req_idx, "upgrade");
- uint64_t hash, len;
+ uint64_t hash;
+ size_t len;
uint8_t* s = (uint8_t*)luaL_checklstring(L, -1, &len);
hash = fnv_1(s, len, v_1);
diff --git a/src/net/util.c b/src/net/util.c
index cc478e4..d770f5e 100644
--- a/src/net/util.c
+++ b/src/net/util.c
@@ -348,7 +348,7 @@ parray_t* route_match(parray_t* paths, char* request, larray_t** _params){
map_t* mime_type = NULL;
char* _mimetypes = "/etc/mime.types";
-uint64_t _mimetypes_len = 15;
+size_t _mimetypes_len = 15;
void parse_mimetypes(){
if(_mimetypes == NULL || _mimetypes_len == 0) return;
diff --git a/src/net/websocket.c b/src/net/websocket.c
index af37f32..06283f6 100644
--- a/src/net/websocket.c
+++ b/src/net/websocket.c
@@ -158,7 +158,7 @@ int l_ws_write(lua_State* L){
frame.mask = 0;
frame.opcode = 0b0001;
- uint64_t len;
+ size_t len;
const char* s = lua_tolstring(L, 2, &len);
str* f = str_init("");
diff --git a/src/thread.c b/src/thread.c
index 1e58aef..cd2eb5f 100644
--- a/src/thread.c
+++ b/src/thread.c
@@ -453,7 +453,8 @@ int _buffer_func_wrapper(lua_State* L){
}
int l_buffer_index(lua_State* L){
- uint64_t len, hash;
+ size_t len;
+ uint64_t hash;
struct thread_buffer *buffer = lua_touserdata(L, 1);
const char* str = luaL_tolstring(L, 2, &len);