Johannes Schindelin <johannes.schindelin@xxxxxx> writes: > Reported via Coverity. > > Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> > --- > http-backend.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/http-backend.c b/http-backend.c > index eef0a361f4f..d12572fda10 100644 > --- a/http-backend.c > +++ b/http-backend.c > @@ -681,8 +681,10 @@ int cmd_main(int argc, const char **argv) > if (!regexec(&re, dir, 1, out, 0)) { > size_t n; > > - if (strcmp(method, c->method)) > + if (strcmp(method, c->method)) { > + free(dir); > return bad_request(&hdr, c); > + } > > cmd = c; > n = out[0].rm_eo - out[0].rm_so; > @@ -708,5 +710,7 @@ int cmd_main(int argc, const char **argv) > max_request_buffer); > > cmd->imp(&hdr, cmd_arg); > + free(dir); > + free(cmd_arg); > return 0; > } Hmph. I find a "leak" of a resource acquired inside the main function and not released when the main function leaves a lot less interesting than the other ones this series covers. When the "return" in the first hunk leaves the function and also the same block of the if () statement breaks out the loop, we also fail to call regfree(&re). Shouldn't we be cleaning it up as well?