From aa5481c1af08edbca821a0d025d26e9bc41a5c49 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 8 Aug 2006 12:23:47 -0700 Subject: [PATCH 1/4] debugging: XMALLOC_POISON Compile with -DXMALLOC_POISON=1 to catch errors from using uninitialized memory returned by xmalloc. Signed-off-by: Junio C Hamano --- git-compat-util.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/git-compat-util.h b/git-compat-util.h index 93f558056d..3bcf5b13f2 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -91,6 +91,9 @@ static inline void *xmalloc(size_t size) ret = malloc(1); if (!ret) die("Out of memory, malloc failed"); +#ifdef XMALLOC_POISON + memset(ret, 0xA5, size); +#endif return ret; } From 329a304714255f6e5528b4311d29f9d83c85d201 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 8 Aug 2006 12:21:33 -0700 Subject: [PATCH 2/4] builtin-mv: fix use of uninitialized memory. Juergen Ruehle noticed that add_slash() tries to strcat() into uninitialized memory and fails. Signed-off-by: Junio C Hamano --- builtin-mv.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/builtin-mv.c b/builtin-mv.c index e47942c135..ce8187c1e9 100644 --- a/builtin-mv.c +++ b/builtin-mv.c @@ -48,7 +48,8 @@ static const char *add_slash(const char *path) if (path[len - 1] != '/') { char *with_slash = xmalloc(len + 2); memcpy(with_slash, path, len); - strcat(with_slash + len, "/"); + with_slash[len++] = '/'; + with_slash[len] = 0; return with_slash; } return path; From c96c29093f70f04e01ff1d3a9c1d509ef6afdb00 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 8 Aug 2006 13:11:16 -0700 Subject: [PATCH 3/4] GIT-VERSION-GEN: adjust for ancient git When an ancient "git" that does not understand "describe" command is on the $PATH, "git describe" emitted a Usage message without exiting non-zero status (which is a mistake we cannot fix retroactively). Catch this case to make sure we do not try using phoney multi-line string as a version number. Signed-off-by: Junio C Hamano --- GIT-VERSION-GEN | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index 1ce217dd7b..14923c973b 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -3,9 +3,17 @@ GVF=GIT-VERSION-FILE DEF_VER=v1.4.2.GIT +LF=' +' + # First try git-describe, then see if there is a version file # (included in release tarballs), then default -if VN=$(git describe --abbrev=4 HEAD 2>/dev/null); then +if VN=$(git describe --abbrev=4 HEAD 2>/dev/null) && + case "$VN" in + *$LF*) (exit 1) ;; + v[0-9]*) : happy ;; + esac +then VN=$(echo "$VN" | sed -e 's/-/./g'); elif test -f version then From 6c8d06aff107aa2132648d682a278111c1d08565 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Tue, 8 Aug 2006 16:01:32 -0400 Subject: [PATCH 4/4] git-push: allow pushing from subdirectories The semantics are equivalent to pushing from the root; we just try harder to find the .git directory. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- git.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git.c b/git.c index 6e72a893b7..18ba14ade1 100644 --- a/git.c +++ b/git.c @@ -229,7 +229,7 @@ static void handle_internal_command(int argc, const char **argv, char **envp) { "log", cmd_log, NEEDS_PREFIX | USE_PAGER }, { "whatchanged", cmd_whatchanged, NEEDS_PREFIX | USE_PAGER }, { "show", cmd_show, NEEDS_PREFIX | USE_PAGER }, - { "push", cmd_push }, + { "push", cmd_push, NEEDS_PREFIX }, { "format-patch", cmd_format_patch, NEEDS_PREFIX }, { "count-objects", cmd_count_objects }, { "diff", cmd_diff, NEEDS_PREFIX },