From: Jeremy Harris Date: Fri, 9 Jun 2017 00:20:07 +0000 (+0100) Subject: Add compile-time checks on expanding-string function use X-Git-Tag: exim-4_90_RC1~135 X-Git-Url: https://git.exim.org/exim.git/commitdiff_plain/268d00ffff678f5c061e34880020d164dca5795e Add compile-time checks on expanding-string function use --- diff --git a/src/src/functions.h b/src/src/functions.h index 4be375d77..34f6434d0 100644 --- a/src/src/functions.h +++ b/src/src/functions.h @@ -14,7 +14,7 @@ are in in fact in separate headers. */ #ifdef EXIM_PERL extern uschar *call_perl_cat(uschar *, int *, int *, uschar **, uschar *, - uschar **); + uschar **) WARN_UNUSED_RESULT; extern void cleanup_perl(void); extern uschar *init_perl(uschar *); #endif @@ -439,12 +439,12 @@ extern int stdin_getc(unsigned); extern int stdin_feof(void); extern int stdin_ferror(void); extern int stdin_ungetc(int); -extern uschar *string_append(uschar *, int *, int *, int, ...); +extern uschar *string_append(uschar *, int *, int *, int, ...) WARN_UNUSED_RESULT; extern uschar *string_append_listele(uschar *, uschar, const uschar *); extern uschar *string_append_listele_n(uschar *, uschar, const uschar *, unsigned); extern uschar *string_base62(unsigned long int); -extern uschar *string_cat(uschar *, int *, int *, const uschar *); -extern uschar *string_catn(uschar *, int *, int *, const uschar *, int); +extern uschar *string_cat(uschar *, int *, int *, const uschar *) WARN_UNUSED_RESULT; +extern uschar *string_catn(uschar *, int *, int *, const uschar *, int) WARN_UNUSED_RESULT; extern int string_compare_by_pointer(const void *, const void *); extern uschar *string_copy_dnsdomain(uschar *); extern uschar *string_copy_malloc(const uschar *); diff --git a/src/src/mytypes.h b/src/src/mytypes.h index b288a32cb..a74705739 100644 --- a/src/src/mytypes.h +++ b/src/src/mytypes.h @@ -30,11 +30,13 @@ local_scan.h includes it and exim.h includes them both (to get this earlier). */ the arguments of printf-like functions. This is done by a macro. */ #if defined(__GNUC__) || defined(__clang__) -# define PRINTF_FUNCTION(A,B) __attribute__((format(printf,A,B))) -# define ARG_UNUSED __attribute__((__unused__)) +# define PRINTF_FUNCTION(A,B) __attribute__((format(printf,A,B))) +# define ARG_UNUSED __attribute__((__unused__)) +# define WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) #else # define PRINTF_FUNCTION(A,B) # define ARG_UNUSED /**/ +# define WARN_UNUSED_RESULT /**/ #endif #ifdef WANT_DEEPER_PRINTF_CHECKS