mirror of
https://github.com/git/git.git
synced 2026-01-11 21:33:13 +09:00
The traditional gmtime(), localtime(), ctime(), and asctime() functions return pointers to shared storage. This means they're not thread-safe, and they also run the risk of somebody holding onto the result across multiple calls (where each call invalidates the previous result). All callers should be using their reentrant counterparts. Signed-off-by: Jeff King <peff@peff.net> Reviewed-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
42 lines
994 B
C
42 lines
994 B
C
#ifndef BANNED_H
|
|
#define BANNED_H
|
|
|
|
/*
|
|
* This header lists functions that have been banned from our code base,
|
|
* because they're too easy to misuse (and even if used correctly,
|
|
* complicate audits). Including this header turns them into compile-time
|
|
* errors.
|
|
*/
|
|
|
|
#define BANNED(func) sorry_##func##_is_a_banned_function
|
|
|
|
#undef strcpy
|
|
#define strcpy(x,y) BANNED(strcpy)
|
|
#undef strcat
|
|
#define strcat(x,y) BANNED(strcat)
|
|
#undef strncpy
|
|
#define strncpy(x,y,n) BANNED(strncpy)
|
|
#undef strncat
|
|
#define strncat(x,y,n) BANNED(strncat)
|
|
|
|
#undef sprintf
|
|
#undef vsprintf
|
|
#ifdef HAVE_VARIADIC_MACROS
|
|
#define sprintf(...) BANNED(sprintf)
|
|
#define vsprintf(...) BANNED(vsprintf)
|
|
#else
|
|
#define sprintf(buf,fmt,arg) BANNED(sprintf)
|
|
#define vsprintf(buf,fmt,arg) BANNED(vsprintf)
|
|
#endif
|
|
|
|
#undef gmtime
|
|
#define gmtime(t) BANNED(gmtime)
|
|
#undef localtime
|
|
#define localtime(t) BANNED(localtime)
|
|
#undef ctime
|
|
#define ctime(t) BANNED(ctime)
|
|
#undef asctime
|
|
#define asctime(t) BANNED(asctime)
|
|
|
|
#endif /* BANNED_H */
|