Gitweb:
http://git.exim.org/exim.git/commitdiff/e0df1c8324f0e0c4112302fa473cff6a6110a044
Commit: e0df1c8324f0e0c4112302fa473cff6a6110a044
Parent: 479576532b1f3c2ce5370b2f0a21c58f2c643918
Author: Dirk Mueller <dmueller@???>
AuthorDate: Sun Apr 22 19:21:32 2012 +0100
Committer: Nigel Metheringham <nigel@???>
CommitDate: Sun Apr 22 19:21:32 2012 +0100
Mark cases where printf format strings are used
Bug report from Lars Müller <lars@???> (via SUSE),
Patch from Dirk Mueller <dmueller@???>
---
doc/doc-txt/ChangeLog | 4 ++++
src/exim_monitor/em_log.c | 4 +++-
src/exim_monitor/em_main.c | 2 +-
src/exim_monitor/em_text.c | 2 ++
src/src/demime.c | 2 +-
src/src/functions.h | 14 +++++++-------
src/src/local_scan.h | 4 ++--
7 files changed, 20 insertions(+), 12 deletions(-)
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index ee63f41..676aa53 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -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@???> (via SUSE),
+ Patch from Dirk Mueller <dmueller@???>
+
Exim version 4.77
-----------------
diff --git a/src/exim_monitor/em_log.c b/src/exim_monitor/em_log.c
index 3f4551a..baa4c89 100644
--- a/src/exim_monitor/em_log.c
+++ b/src/exim_monitor/em_log.c
@@ -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)
diff --git a/src/exim_monitor/em_main.c b/src/exim_monitor/em_main.c
index 22a721d..7193640 100644
--- a/src/exim_monitor/em_main.c
+++ b/src/exim_monitor/em_main.c
@@ -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");
diff --git a/src/exim_monitor/em_text.c b/src/exim_monitor/em_text.c
index ba13ff1..e39ec02 100644
--- a/src/exim_monitor/em_text.c
+++ b/src/exim_monitor/em_text.c
@@ -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;
diff --git a/src/src/demime.c b/src/src/demime.c
index ca295f9..887678d 100644
--- a/src/src/demime.c
+++ b/src/src/demime.c
@@ -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) {
diff --git a/src/src/functions.h b/src/src/functions.h
index d257594..9e8a954 100644
--- a/src/src/functions.h
+++ b/src/src/functions.h
@@ -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);
diff --git a/src/src/local_scan.h b/src/src/local_scan.h
index c1d54d4..25b1944 100644
--- a/src/src/local_scan.h
+++ b/src/src/local_scan.h
@@ -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 */