Skip to content

Commit 48aec1b

Browse files
Tarmigan Caseboltgitster
authored andcommitted
http-backend: Fix access beyond end of string.
Found with valgrind while looking for Content-Length corruption in smart http. Signed-off-by: Tarmigan Casebolt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 4a5328d commit 48aec1b

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

http-backend.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,7 @@ int main(int argc, char **argv)
615615
if (regcomp(&re, c->pattern, REG_EXTENDED))
616616
die("Bogus regex in service table: %s", c->pattern);
617617
if (!regexec(&re, dir, 1, out, 0)) {
618-
size_t n = out[0].rm_eo - out[0].rm_so;
618+
size_t n;
619619

620620
if (strcmp(method, c->method)) {
621621
const char *proto = getenv("SERVER_PROTOCOL");
@@ -629,9 +629,10 @@ int main(int argc, char **argv)
629629
}
630630

631631
cmd = c;
632+
n = out[0].rm_eo - out[0].rm_so;
632633
cmd_arg = xmalloc(n);
633-
strncpy(cmd_arg, dir + out[0].rm_so + 1, n);
634-
cmd_arg[n] = '\0';
634+
memcpy(cmd_arg, dir + out[0].rm_so + 1, n-1);
635+
cmd_arg[n-1] = '\0';
635636
dir[out[0].rm_so] = 0;
636637
break;
637638
}

0 commit comments

Comments
 (0)