aboutsummaryrefslogtreecommitdiff
path: root/src/encode
diff options
context:
space:
mode:
authorame <[email protected]>2026-02-15 04:08:16 -0600
committerame <[email protected]>2026-02-15 04:08:16 -0600
commitdb2611fcad18f73572dd1b344e4197536086be53 (patch)
tree8d6df833110e57fa7d77753571acfda2ebb23f95 /src/encode
parent0a909a9dc5879e592d92c6eedeb59da8cf503392 (diff)
ssl server support, websocket upgrades, and net changes
Diffstat (limited to 'src/encode')
-rw-r--r--src/encode/base64.c10
-rw-r--r--src/encode/base64.h2
2 files changed, 6 insertions, 6 deletions
diff --git a/src/encode/base64.c b/src/encode/base64.c
index d6b3474..9f95cb6 100644
--- a/src/encode/base64.c
+++ b/src/encode/base64.c
@@ -48,10 +48,8 @@ int de_base64(char* in, char* out){
}
return 0;
}
-int en_base64(char* in, char* out){
- int len = 0;
- for(int i = 0; in[i]!='\0'; i++) len++;
+int en_base64(char* in, uint64_t len, char* out){
//char out[(len+1)*3];
for(int i = 0; i < len; i+=3){
uint8_t f = i>len?0:in[i];
@@ -63,8 +61,8 @@ int en_base64(char* in, char* out){
uint8_t i3 = (uint8_t)(s<<4)>>2 | (t>>6);
uint8_t i4 = t & 0x3f;
- if(t==0)i4 = 64;
- if(s==0)i3 = 64;
+ if(i+1>=len)i3 = 64;
+ if(i+2>=len)i4 = 64;
sprintf(out,"%s%c%c%c%c",out,char_index(i1),char_index(i2),
char_index(i3),char_index(i4));
}
@@ -78,7 +76,7 @@ int l_base64encode(lua_State* L){
memcpy(a, _a, len);
char* encode = calloc(len * 3,sizeof * encode);
- en_base64(a, encode);
+ en_base64(a, len, encode);
lua_pushstring(L, encode);
free(a);
diff --git a/src/encode/base64.h b/src/encode/base64.h
index 216d5e2..a58f503 100644
--- a/src/encode/base64.h
+++ b/src/encode/base64.h
@@ -2,3 +2,5 @@
int l_base64encode(lua_State*);
int l_base64decode(lua_State*);
+
+int en_base64(char* in, uint64_t, char* out);