From: nguyenhu@minatec.inpg.fr
To: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Cc: nguyenhu@ensibm.imag.fr, git@vger.kernel.org,
Matthieu.Moy@grenoble-inp.fr,
Lucien KONG <Lucien.Kong@ensimag.imag.fr>,
Valentin DUPERRAY <Valentin.Duperray@ensimag.imag.fr>,
Thomas NGUY <Thomas.Nguy@ensimag.imag.fr>,
Franck JONAS <Franck.Jonas@ensimag.imag.fr>,
Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCHv4] Read (but not write) from XDG configuration, XDG attributes and XDG ignore files
Date: Tue, 05 Jun 2012 14:19:16 +0200 [thread overview]
Message-ID: <20120605141916.Horde.wKnrT3wdC4BPzflEUfYiRPA@webmail.minatec.grenoble-inp.fr> (raw)
In-Reply-To: <4FCCF63B.8070609@ramsay1.demon.co.uk>
Ramsay Jones <ramsay@ramsay1.demon.co.uk> a écrit :
>
> So, this re-introduces the bug addressed by commit 05bab3ea. The test number
> is now 29 (rather than 21) but the same test is failing; namely
> t3200-branch.sh
> test #29 (git branch -m q q2 without config should succeed).
>
> In order to fix the bug, I created the patch given below (on top of
> this patch).
> (Note that it does not address the above issues).
>
> HTH
>
> ATB,
> Ramsay Jones
>
> -- >8 --
> From: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
> Subject: [PATCH] path.c: Fix a static buffer overwrite bug by
> avoiding mkpath()
>
> The v4 version of the "Read (but not write) from XDG configuration,
> XDG attributes and XDG ignore files" patch, re-introduced the bug
> addressed by commit 05bab3ea ("config.c: Fix a static buffer overwrite
> bug by avoiding mkpath()", 19-11-2011). Note that the patch refactored
> the code to determine the user (or home) configuration filename into
> a new function (home_config_paths()). In doing so, the new code once
> again uses mkpath() rather than mksnpath().
>
> In order to fix the bug, we introduce a new variation of the mkpath()
> function, mkpathdup(), which avoids the use of the internal static
> buffers. As the name implies, the new function returns a pointer to
> the pathname as a dynamically allocated string. It is the callers
> responsibility to free the memory for the returned string.
>
> Having introduced the new function, we can now replace the calls to
> 'xstrdup(mkpath(...))' in the home_config_paths() function with a
> call to mkpathdup() to achieve the same effect, without tickling the
> original bug.
>
> (Also, note that the 'xstrdup(mkpath(...))' pattern occurs in several
> other places in the source ...)
>
> Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
> ---
> cache.h | 2 ++
> path.c | 20 +++++++++++++++++---
> 2 files changed, 19 insertions(+), 3 deletions(-)
>
> diff --git a/cache.h b/cache.h
> index 0632503..fbba2d6 100644
> --- a/cache.h
> +++ b/cache.h
> @@ -619,6 +619,8 @@ extern char *git_snpath(char *buf, size_t n,
> const char *fmt, ...)
> __attribute__((format (printf, 3, 4)));
> extern char *git_pathdup(const char *fmt, ...)
> __attribute__((format (printf, 1, 2)));
> +extern char *mkpathdup(const char *fmt, ...)
> + __attribute__((format (printf, 1, 2)));
>
> /* Return a statically allocated filename matching the sha1 signature */
> extern char *mkpath(const char *fmt, ...) __attribute__((format
> (printf, 1, 2)));
> diff --git a/path.c b/path.c
> index 53f3f53..ca29bdd 100644
> --- a/path.c
> +++ b/path.c
> @@ -87,6 +87,20 @@ char *git_pathdup(const char *fmt, ...)
> return xstrdup(path);
> }
>
> +char *mkpathdup(const char *fmt, ...)
> +{
> + char path[PATH_MAX];
> + va_list args;
> + unsigned len;
> +
> + va_start(args, fmt);
> + len = vsnprintf(path, sizeof(path), fmt, args);
> + va_end(args);
> + if (len >= sizeof(path))
> + return xstrdup(bad_path);
> + return xstrdup(cleanup_path(path));
> +}
> +
> char *mkpath(const char *fmt, ...)
> {
> va_list args;
> @@ -133,17 +147,17 @@ void home_config_paths(char **global, char
> **xdg, char *file)
> *global = NULL;
> } else {
> if (!xdg_home) {
> - to_free = strdup(mkpath("%s/.config", home));
> + to_free = mkpathdup("%s/.config", home);
> xdg_home = to_free;
> }
> if (global)
> - *global = xstrdup(mkpath("%s/.gitconfig", home));
> + *global = mkpathdup("%s/.gitconfig", home);
> }
>
> if (!xdg_home)
> *xdg = NULL;
> else
> - *xdg = xstrdup(mkpath("%s/git/%s", xdg_home, file));
> + *xdg = mkpathdup("%s/git/%s", xdg_home, file);
>
> free(to_free);
> }
> --
> 1.7.10
>
Thank you for having fixed this bug we have re-introduced with your
patch, we will add your modifications in our next v6 version.
prev parent reply other threads:[~2012-06-05 12:19 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1338400509-26087-1-git-send-email-Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr>
2012-05-30 21:19 ` [PATCHv2] Possibility to read both from ~/.gitconfig and from $XDG_CONFIG_HOME/git/config Huynh Khoi Nguyen NGUYEN
2012-05-30 21:54 ` Junio C Hamano
2012-05-31 22:06 ` Ramsay Jones
2012-05-31 14:40 ` [PATCHv3] Read from XDG configuration file, not write Huynh Khoi Nguyen NGUYEN
2012-05-31 20:13 ` Junio C Hamano
2012-06-01 21:23 ` [PATCHv4] Read (but not write) from XDG configuration, XDG attributes and XDG ignore files Huynh Khoi Nguyen NGUYEN
2012-06-02 11:20 ` Matthieu Moy
2012-06-02 15:52 ` nguyenhu
2012-06-02 21:05 ` Matthieu Moy
2012-06-03 20:14 ` [PATCHv5 1/4] Read (but not write) from $XDG_CONFIG_HOME/git/config file Huynh Khoi Nguyen NGUYEN
2012-06-03 20:14 ` [PATCHv5 2/4] Let core.excludesfile default to $XDG_CONFIG_HOME/git/ignore Huynh Khoi Nguyen NGUYEN
2012-06-04 11:43 ` Matthieu Moy
2012-06-05 13:17 ` nguyenhu
2012-06-03 20:14 ` [PATCHv5 3/4] Let core.attributesfile default to $XDG_CONFIG_HOME/git/attributes Huynh Khoi Nguyen NGUYEN
2012-06-03 20:14 ` [PATCHv5 4/4] Write to $XDG_CONFIG_HOME/git/config file Huynh Khoi Nguyen NGUYEN
2012-06-04 21:17 ` Matthieu Moy
2012-06-05 13:04 ` nguyenhu
2012-06-06 13:21 ` [PATCHv6 1/4] Read (but not write) from " Huynh Khoi Nguyen NGUYEN
2012-06-06 13:21 ` [PATCHv6 2/4] Let core.excludesfile default to $XDG_CONFIG_HOME/git/ignore Huynh Khoi Nguyen NGUYEN
2012-06-07 23:31 ` Junio C Hamano
2012-06-08 8:47 ` Matthieu Moy
2012-06-08 9:02 ` nguyenhu
2012-06-06 13:21 ` [PATCHv6 3/4] Let core.attributesfile default to $XDG_CONFIG_HOME/git/attributes Huynh Khoi Nguyen NGUYEN
2012-06-06 13:21 ` [PATCHv6 4/4] Write to $XDG_CONFIG_HOME/git/config file Huynh Khoi Nguyen NGUYEN
2012-06-09 3:48 ` David Aguilar
2012-06-09 6:19 ` Junio C Hamano
2012-06-09 17:25 ` David Aguilar
2012-06-10 13:21 ` Matthieu Moy
2012-06-11 23:45 ` nguyenhu
2012-06-07 22:58 ` [PATCHv6 1/4] Read (but not write) from " Junio C Hamano
2012-06-08 9:57 ` nguyenhu
2012-06-12 17:42 ` Ramsay Jones
2012-06-08 12:26 ` nguyenhu
2012-06-08 12:33 ` Erik Faye-Lund
2012-06-08 12:54 ` nguyenhu
2012-06-08 12:57 ` Erik Faye-Lund
2012-06-08 15:08 ` Junio C Hamano
2012-06-09 10:53 ` nguyenhu
2012-06-10 6:41 ` Junio C Hamano
2012-06-10 13:48 ` nguyenhu
2012-06-10 18:44 ` Erik Faye-Lund
2012-06-10 20:02 ` nguyenhu
2012-06-10 20:27 ` Erik Faye-Lund
2012-06-11 15:50 ` Junio C Hamano
2012-06-11 16:53 ` nguyenhu
2012-06-11 22:59 ` nguyenhu
2012-06-11 23:03 ` Erik Faye-Lund
2012-06-12 2:49 ` [PATCHv7 " Huynh Khoi Nguyen Nguyen
2012-06-12 2:49 ` [PATCHv7 2/4] Let core.excludesfile default to $XDG_CONFIG_HOME/git/ignore Huynh Khoi Nguyen Nguyen
2012-06-12 2:49 ` [PATCHv7 3/4] Let core.attributesfile default to $XDG_CONFIG_HOME/git/attributes Huynh Khoi Nguyen Nguyen
2012-06-12 2:49 ` [PATCHv7 4/4] Write to $XDG_CONFIG_HOME/git/config file Huynh Khoi Nguyen Nguyen
2012-06-14 17:31 ` [PATCHv7 1/4] Read (but not write) from " Ramsay Jones
2012-06-21 16:55 ` Matthieu Moy
2012-06-21 17:22 ` Junio C Hamano
2012-06-22 9:03 ` [PATCH 0/4 v8] Git configuration directory Matthieu Moy
2012-06-22 9:03 ` [PATCH 1/4 v8] config: read (but not write) from $XDG_CONFIG_HOME/git/config file Matthieu Moy
2012-07-12 7:55 ` Thomas Rast
2012-07-12 12:04 ` [PATCH] config: fix several access(NULL) calls Matthieu Moy
2012-07-12 12:39 ` Thomas Rast
2012-07-12 17:14 ` Junio C Hamano
2012-07-12 19:34 ` Matthieu Moy
2012-07-12 20:12 ` Junio C Hamano
2012-07-13 8:48 ` Matthieu Moy
2012-07-13 8:59 ` [PATCH v2] " Matthieu Moy
2012-07-13 13:00 ` [PATCH] " Jeff King
2012-07-13 13:15 ` Matthieu Moy
2012-07-13 14:05 ` Thomas Rast
2012-07-13 14:23 ` Matthieu Moy
2012-07-13 16:49 ` Junio C Hamano
2012-07-16 9:45 ` Matthieu Moy
2012-07-16 16:35 ` Junio C Hamano
2012-07-16 16:39 ` Matthieu Moy
2012-07-16 16:56 ` Junio C Hamano
2012-06-22 9:03 ` [PATCH 2/4 v8] Let core.excludesfile default to $XDG_CONFIG_HOME/git/ignore Matthieu Moy
2012-06-22 9:03 ` [PATCH 3/4 v8] Let core.attributesfile " Matthieu Moy
2012-06-22 21:20 ` Junio C Hamano
2012-06-25 6:32 ` Matthieu Moy
2012-06-25 7:22 ` Junio C Hamano
2012-06-25 7:56 ` Matthieu Moy
2012-06-22 9:03 ` [PATCH 4/4 v8] config: write to $XDG_CONFIG_HOME/git/config file if appropriate Matthieu Moy
2012-06-22 21:20 ` Junio C Hamano
2012-06-25 6:45 ` Matthieu Moy
2012-06-25 18:08 ` Junio C Hamano
2012-06-22 21:19 ` [PATCH 0/4 v8] Git configuration directory Junio C Hamano
2012-06-04 17:54 ` [PATCHv4] Read (but not write) from XDG configuration, XDG attributes and XDG ignore files Ramsay Jones
2012-06-04 18:41 ` Junio C Hamano
2012-06-12 17:32 ` Ramsay Jones
2012-06-05 12:19 ` nguyenhu [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120605141916.Horde.wKnrT3wdC4BPzflEUfYiRPA@webmail.minatec.grenoble-inp.fr \
--to=nguyenhu@minatec.inpg.fr \
--cc=Franck.Jonas@ensimag.imag.fr \
--cc=Lucien.Kong@ensimag.imag.fr \
--cc=Matthieu.Moy@grenoble-inp.fr \
--cc=Thomas.Nguy@ensimag.imag.fr \
--cc=Valentin.Duperray@ensimag.imag.fr \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=nguyenhu@ensibm.imag.fr \
--cc=ramsay@ramsay1.demon.co.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).