Skip to content

Commit

Permalink
init: Do not segfault on big GIT_TEMPLATE_DIR environment variable
Browse files Browse the repository at this point in the history
Signed-off-by: Frank Lichtenheld <flichtenheld@astaro.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Frank Lichtenheld authored and Junio C Hamano committed Apr 18, 2009
1 parent e0b3cc0 commit 32d1776
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
4 changes: 3 additions & 1 deletion builtin-init-db.c
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,10 @@ static void copy_templates(const char *template_dir)
template_dir = system_path(DEFAULT_GIT_TEMPLATE_DIR);
if (!template_dir[0])
return;
template_len = strlen(template_dir);
if (PATH_MAX <= (template_len+strlen("/config")))
die("insanely long template path %s", template_dir);
strcpy(template_path, template_dir);
template_len = strlen(template_path);
if (template_path[template_len-1] != '/') {
template_path[template_len++] = '/';
template_path[template_len] = 0;
Expand Down
9 changes: 9 additions & 0 deletions t/t0001-init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -199,4 +199,13 @@ test_expect_success 'init honors global core.sharedRepository' '
x`git config -f shared-honor-global/.git/config core.sharedRepository`
'

test_expect_success 'init rejects insanely long --template' '
(
insane=$(printf "x%09999dx" 1) &&
mkdir test &&
cd test &&
test_must_fail git init --template=$insane
)
'

test_done

0 comments on commit 32d1776

Please sign in to comment.