OSDN Git Service

environment.c: fix potential segfault by get_git_common_dir()
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Tue, 4 Apr 2017 10:21:19 +0000 (17:21 +0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 17 Apr 2017 01:24:29 +0000 (18:24 -0700)
commita560d87033729d884acb3f198cc52edd6c816416
tree8e4fde703c5a5ed231b4540034b2aeec049262d0
parentadac8115a6e7f9841c48e4fe48b74e0ce652ef58
environment.c: fix potential segfault by get_git_common_dir()

setup_git_env() must be called before this function to initialize
git_common_dir so that it returns a non NULL string. And it must return
a non NULL string or segfault can happen because all callers expect so.

It does not do so explicitly though and depends on get_git_dir() being
called first (which will guarantee setup_git_env()). Avoid this
dependency and call setup_git_env() by itself.

test-ref-store.c will hit this problem because it's very lightweight,
just enough initialization to exercise refs code, and get_git_dir() will
never be called until get_worktrees() is, which uses get_git_common_dir
and hits a segfault.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
environment.c