Mark cases where printf format strings are used
authorDirk Mueller <dmueller@suse.com>
Sun, 22 Apr 2012 18:21:32 +0000 (19:21 +0100)
committerNigel Metheringham <nigel@exim.org>
Sun, 22 Apr 2012 18:21:32 +0000 (19:21 +0100)
Bug report from Lars Müller <lars@samba.org> (via SUSE),
Patch from Dirk Mueller <dmueller@suse.com>

doc/doc-txt/ChangeLog
src/exim_monitor/em_log.c
src/exim_monitor/em_main.c
src/exim_monitor/em_text.c
src/src/demime.c
src/src/functions.h
src/src/local_scan.h

index ee63f414ed460041302affae00c8cf6af2b72e4d..676aa534c61609fda078c3eb355ef33469742c0f 100644 (file)
@@ -45,6 +45,10 @@ PP/12 MAIL args handles TAB as well as SP, for better interop with
       non-compliant senders.
       Analysis and variant patch by Todd Lyons.
 
+NM/04 Bugzilla 1237 - fix cases where printf format usage no indicated
+      Bug report from Lars Müller <lars@samba.org> (via SUSE), 
+      Patch from Dirk Mueller <dmueller@suse.com>
+
 
 Exim version 4.77
 -----------------
index 3f4551a07c3c90a9670b949307a82049015f7d33..baa4c8996cb06b391d21df5ef1f2168dc3944f67 100644 (file)
@@ -56,6 +56,8 @@ static int scrolled = FALSE;
 static int size = 0;
 static int top = 0;
 
+static void show_log(char *s, ...) PRINTF_FUNCTION(1,2);
+
 static void show_log(char *s, ...)
 {
 int length, newtop;
@@ -362,7 +364,7 @@ link count of zero on the currently open file. */
 if (log_datestamping)
   {
   uschar log_file_wanted[256];
-  string_format(log_file_wanted, sizeof(log_file_wanted), CS log_file);
+  string_format(log_file_wanted, sizeof(log_file_wanted), "%s", CS log_file);
   if (Ustrcmp(log_file_wanted, log_file_open) != 0)
     {
     if (LOG != NULL)
index 22a721d5217bdbf9b4ec2d6d08404de61a783664..7193640a5fa11d4f0f93e79b4cf2ed6981867a61 100644 (file)
@@ -654,7 +654,7 @@ today.) */
 
 if (log_file[0] != 0)
   {
-  (void)string_format(log_file_open, sizeof(log_file_open), CS log_file);
+  (void)string_format(log_file_open, sizeof(log_file_open), "%s", CS log_file);
   log_datestamping = string_datestamp_offset >= 0;
 
   LOG = fopen(CS log_file_open, "r");
index ba13ff1047b0adfe1125a293b558e4074e9cd56e..e39ec0298317a56384ac2c839e54388bfcf1741c 100644 (file)
@@ -58,6 +58,8 @@ XawTextSetInsertionPoint(w, text_count);
 *           Display text from format             *
 *************************************************/
 
+void text_showf(Widget w, char *s, ...) PRINTF_FUNCTION(2,3);
+
 void text_showf(Widget w, char *s, ...)
 {
 va_list ap;
index ca295f98e1aafd3e0c39d38d264ea3152ae43ed7..887678db3300df4bd3513b943ac04cbfaf0214e5 100644 (file)
@@ -821,7 +821,7 @@ void mime_trigger_error(int level, uschar *format, ...) {
     (void)string_vformat(US f, 16383,(char *)format, ap);
     va_end(ap);
     f-=22;
-    log_write(0, LOG_MAIN, f);
+    log_write(0, LOG_MAIN, "%s", f);
     /* then copy to demime_reason_buffer if new
     level is greater than old level */
     if (level > demime_errorlevel) {
index d2575946b0e1d08e414279a3a513d51b9cfdb3b5..9e8a9546f30437fd26e72e707720d16607c9299f 100644 (file)
@@ -82,7 +82,7 @@ extern void    decode_bits(unsigned int *, unsigned int *,
                   int, int, uschar *, bit_table *, int, uschar *, int);
 extern address_item *deliver_make_addr(uschar *, BOOL);
 extern int     deliver_message(uschar *, BOOL, BOOL);
-extern void    deliver_msglog(const char *, ...);
+extern void    deliver_msglog(const char *, ...) PRINTF_FUNCTION(1,2);
 extern void    deliver_set_expansions(address_item *);
 extern int     deliver_split_address(address_item *);
 extern void    deliver_succeeded(address_item *);
@@ -182,9 +182,9 @@ extern int     mime_regex(uschar **);
 extern uschar *moan_check_errorcopy(uschar *);
 extern BOOL    moan_skipped_syntax_errors(uschar *, error_block *, uschar *,
                  BOOL, uschar *);
-extern void    moan_smtp_batch(uschar *, const char *, ...);
+extern void    moan_smtp_batch(uschar *, const char *, ...) PRINTF_FUNCTION(2,3);
 extern void    moan_tell_someone(uschar *, address_item *,
-                 const uschar *, const char *, ...);
+                 const uschar *, const char *, ...) PRINTF_FUNCTION(4,5);
 extern BOOL    moan_to_sender(int, error_block *, header_line *, FILE *, BOOL);
 extern void    moan_write_from(FILE *);
 extern FILE   *modefopen(const uschar *, const char *, mode_t);
@@ -272,7 +272,7 @@ extern int     search_findtype_partial(uschar *, int *, uschar **, int *,
                  int *);
 extern void   *search_open(uschar *, int, int, uid_t *, gid_t *);
 extern void    search_tidyup(void);
-extern void    set_process_info(const char *, ...);
+extern void    set_process_info(const char *, ...) PRINTF_FUNCTION(1,2);
 extern void    sha1_end(sha1 *, const uschar *, int, uschar *);
 extern void    sha1_mid(sha1 *, const uschar *);
 extern void    sha1_start(sha1 *);
@@ -300,7 +300,7 @@ extern int     smtp_setup_msg(void);
 extern BOOL    smtp_start_session(void);
 extern int     smtp_ungetc(int);
 extern BOOL    smtp_verify_helo(void);
-extern int     smtp_write_command(smtp_outblock *, BOOL, const char *, ...);
+extern int     smtp_write_command(smtp_outblock *, BOOL, const char *, ...) PRINTF_FUNCTION(3,4);
 #ifdef WITH_CONTENT_SCAN
 extern int     spam(uschar **);
 extern FILE   *spool_mbox(unsigned long *, uschar *);
@@ -322,13 +322,13 @@ extern uschar *string_copy_malloc(uschar *);
 extern uschar *string_copylc(uschar *);
 extern uschar *string_copynlc(uschar *, int);
 extern uschar *string_dequote(uschar **);
-extern BOOL    string_format(uschar *, int, const char *, ...);
+extern BOOL    string_format(uschar *, int, const char *, ...) PRINTF_FUNCTION(3,4);
 extern uschar *string_format_size(int, uschar *);
 extern int     string_interpret_escape(uschar **);
 extern int     string_is_ip_address(uschar *, int *);
 extern uschar *string_log_address(address_item *, BOOL, BOOL);
 extern uschar *string_nextinlist(uschar **, int *, uschar *, int);
-extern uschar *string_open_failed(int, const char *, ...);
+extern uschar *string_open_failed(int, const char *, ...) PRINTF_FUNCTION(2,3);
 extern uschar *string_printing2(uschar *, BOOL);
 extern uschar *string_split_message(uschar *);
 extern BOOL    string_vformat(uschar *, int, const char *, va_list);
index c1d54d4971ed1ebea53da036f76846d61208e83d..25b194407ad04a967cc49fe98f0ef7fd55917506 100644 (file)
@@ -173,7 +173,7 @@ extern void    header_add_at_position(BOOL, uschar *, BOOL, int, const char *, .
 extern void    header_remove(int, const uschar *);
 extern BOOL    header_testname(header_line *, const uschar *, int, BOOL);
 extern BOOL    header_testname_incomplete(header_line *, const uschar *, int, BOOL);
-extern void    log_write(unsigned int, int, const char *format, ...);
+extern void    log_write(unsigned int, int, const char *format, ...) PRINTF_FUNCTION(3,4);
 extern int     lss_b64decode(uschar *, uschar **);
 extern uschar *lss_b64encode(uschar *, int);
 extern int     lss_match_domain(uschar *, uschar *);
@@ -188,6 +188,6 @@ extern void    smtp_printf(const char *, ...) PRINTF_FUNCTION(1,2);
 extern void    smtp_vprintf(const char *, va_list);
 extern uschar *string_copy(uschar *);
 extern uschar *string_copyn(uschar *, int);
-extern uschar *string_sprintf(const char *, ...);
+extern uschar *string_sprintf(const char *, ...) PRINTF_FUNCTION(1,2);
 
 /* End of local_scan.h */