diff options
author | Michal Rokos <michal.rokos@nextsoft.cz> | 2008-03-05 16:46:13 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-03-05 13:12:07 -0800 |
commit | c4582f93a263bea534288e7f7ad8937405964cd4 (patch) | |
tree | 0347f5c0606376d6ebd8e35dd4636139711fd8ac /git-compat-util.h | |
parent | b9217642ef2db34e2cbeaef8d4439b07a03027cd (diff) | |
download | git-c4582f93a263bea534288e7f7ad8937405964cd4.tar.gz |
Add compat/snprintf.c for systems that return bogus
Some systems (namely HPUX and Windows) return -1 when maxsize in snprintf()
and in vsnprintf() is reached. So replace snprintf() and vsnprintf()
functions with our own ones that return correct value upon overflow.
[jc: verified that review comments by J6t have been incorporated, and
tightened the check to verify the resulting buffer contents, suggested
by Wayne Davison]
Signed-off-by: Michal Rokos <michal.rokos@nextsoft.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-compat-util.h')
-rw-r--r-- | git-compat-util.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/git-compat-util.h b/git-compat-util.h index 2a40703c85..9d04faefb8 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -209,6 +209,15 @@ void *gitmemmem(const void *haystack, size_t haystacklen, extern FILE *git_fopen(const char*, const char*); #endif +#ifdef SNPRINTF_RETURNS_BOGUS +#define snprintf git_snprintf +extern int git_snprintf(char *str, size_t maxsize, + const char *format, ...); +#define vsnprintf git_vsnprintf +extern int git_vsnprintf(char *str, size_t maxsize, + const char *format, va_list ap); +#endif + #ifdef __GLIBC_PREREQ #if __GLIBC_PREREQ(2, 1) #define HAVE_STRCHRNUL |