Fixes issue #33 related to a memory issue, and format some code. (#35)

Fixes #33.

Co-authored-by: LoaD Accumulator <lda@freetards.xyz>
Reviewed-on: Telodendria/telodendria#35
Co-authored-by: LoaD Accumulator <lda@noreply.git.telodendria.io>
Co-committed-by: LoaD Accumulator <lda@noreply.git.telodendria.io>
This commit is contained in:
LoaD Accumulator 2023-09-11 10:57:16 -04:00 committed by Jordan Bancino
parent 0b820b80f7
commit 0172fa083b
3 changed files with 10 additions and 4 deletions

View file

@ -196,7 +196,7 @@ HttpRouterRoute(HttpRouter * router, char *path, void *args, void **ret)
char *pathPart; char *pathPart;
char *tmp; char *tmp;
HttpRouteFunc *exec = NULL; HttpRouteFunc *exec = NULL;
Array *matches; Array *matches = NULL;
size_t i; size_t i;
int retval; int retval;
@ -254,14 +254,18 @@ HttpRouterRoute(HttpRouter * router, char *path, void *args, void **ret)
{ {
/* pmatch[0] is the whole string, not the first /* pmatch[0] is the whole string, not the first
* subexpression */ * subexpression */
char * substr;
regmatch_t cpmatch;
for (i = 1; i < REG_MAX_SUB; i++) for (i = 1; i < REG_MAX_SUB; i++)
{ {
cpmatch = pmatch[i];
substr = StrSubstr(pathPart, cpmatch.rm_so, cpmatch.rm_eo);
if (pmatch[i].rm_so == -1) if (pmatch[i].rm_so == -1)
{ {
break; break;
} }
ArrayAdd(matches, StrSubstr(pathPart, pmatch[i].rm_so, pmatch[i].rm_eo)); ArrayAdd(matches, substr);
} }
} }
} }

View file

@ -147,7 +147,6 @@ StrSubstr(const char *inStr, size_t start, size_t end)
} }
len = end - start; len = end - start;
outStr = Malloc(len + 1); outStr = Malloc(len + 1);
if (!outStr) if (!outStr)
{ {

View file

@ -172,7 +172,10 @@ ROUTE_IMPL(RouteUserProfile, path, argp)
} }
finish: finish:
ConfigUnlock(config); ConfigUnlock(config);
Free(username);
/* Username is handled by the router, freeing it *will* cause issues
* (see #33). I honestly don't know how it didn't come to bite us sooner.
Free(username); */
Free(entry); Free(entry);
UserIdFree(userId); UserIdFree(userId);
UserUnlock(user); UserUnlock(user);