[FIX] Fix issue mentionned in #33

This commit is contained in:
lda 2023-09-11 15:56:13 +02:00
parent c626b2f4f2
commit e0327b8769
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);