diff options
author | Jeff King <peff@peff.net> | 2012-02-16 03:03:52 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-02-17 07:52:41 -0800 |
commit | 839de2527258879aa21ae7ad425353f06dbb4717 (patch) | |
tree | 96c99542c123e40dd65fac8d9f2dbbb64b29e733 | |
parent | t1300: add missing &&-chaining (diff) | |
download | tgif-839de2527258879aa21ae7ad425353f06dbb4717.tar.xz |
config: copy the return value of prefix_filename
The prefix_filename function returns a pointer to a static
buffer which may be overwritten by subsequent calls. Since
we are going to keep the result around for a while, let's be
sure to duplicate it for safety.
I don't think this can be triggered as a bug in the current
code, but it's a good idea to be defensive, as any resulting
bug would be quite subtle.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin/config.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/builtin/config.c b/builtin/config.c index d35c06ae51..55854bef68 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -377,9 +377,10 @@ int cmd_config(int argc, const char **argv, const char *prefix) config_exclusive_filename = git_pathdup("config"); else if (given_config_file) { if (!is_absolute_path(given_config_file) && prefix) - config_exclusive_filename = prefix_filename(prefix, - strlen(prefix), - given_config_file); + config_exclusive_filename = + xstrdup(prefix_filename(prefix, + strlen(prefix), + given_config_file)); else config_exclusive_filename = given_config_file; } |