diff options
author | Alex Riesen <raa.lkml@gmail.com> | 2008-10-27 11:11:40 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-10-30 17:18:29 -0700 |
commit | 958a4789e0e74da245175e31bd3b9b354ee0e063 (patch) | |
tree | 372b8009f76ad426bf1167f5a580cefc86e7d6fa /refs.c | |
parent | fe2d7776d5191896e361973f478ca078fa95b324 (diff) | |
download | git-958a4789e0e74da245175e31bd3b9b354ee0e063.tar.gz |
Fix potentially dangerous use of git_path in ref.c
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'refs.c')
-rw-r--r-- | refs.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -401,7 +401,7 @@ const char *resolve_ref(const char *ref, unsigned char *sha1, int reading, int * *flag = 0; for (;;) { - const char *path = git_path("%s", ref); + char path[PATH_MAX]; struct stat st; char *buf; int fd; @@ -409,6 +409,7 @@ const char *resolve_ref(const char *ref, unsigned char *sha1, int reading, int * if (--depth < 0) return NULL; + git_snpath(path, sizeof(path), "%s", ref); /* Special case: non-existing file. * Not having the refs/heads/new-branch is OK * if we are writing into it, so is .git/HEAD @@ -1121,13 +1122,14 @@ static int log_ref_write(const char *ref_name, const unsigned char *old_sha1, int logfd, written, oflags = O_APPEND | O_WRONLY; unsigned maxlen, len; int msglen; - char *log_file, *logrec; + char log_file[PATH_MAX]; + char *logrec; const char *committer; if (log_all_ref_updates < 0) log_all_ref_updates = !is_bare_repository(); - log_file = git_path("logs/%s", ref_name); + git_snpath(log_file, sizeof(log_file), "logs/%s", ref_name); if (log_all_ref_updates && (!prefixcmp(ref_name, "refs/heads/") || |