From 124518ae5fba9e352a9cf8a8d7c1a8160475d10b Mon Sep 17 00:00:00 2001 From: Matthias Andree Date: Tue, 14 May 2019 22:46:44 +0200 Subject: In-depth robustness. Reported by: clang static analyzer (clang-8) --- driver.c | 5 +++-- report.c | 2 +- sink.c | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/driver.c b/driver.c index 6176bcb9..74e1b28a 100644 --- a/driver.c +++ b/driver.c @@ -542,8 +542,9 @@ static int fetch_messages(int mailserver_socket, struct query *ctl, lastnum = num + fetchsizelimit - 1; if (lastnum > count) lastnum = count; - for (i = 0; i < fetchsizelimit; i++) - (*msgsizes)[i] = 0; + if (*msgsizes) + for (i = 0; i < fetchsizelimit; i++) + (*msgsizes)[i] = 0; stage = STAGE_GETSIZES; err = (ctl->server.base_protocol->getpartialsizes)(mailserver_socket, num, lastnum, *msgsizes); diff --git a/report.c b/report.c index 5d9abb73..1466802a 100644 --- a/report.c +++ b/report.c @@ -362,7 +362,7 @@ report_at_line (FILE *errfp, errnum, file_name, line_number, message, va_alist) static unsigned int old_line_number; if (old_line_number == line_number && - (file_name == old_file_name || !strcmp (old_file_name, file_name))) + (file_name == old_file_name || (old_file_name != NULL && 0 == strcmp (old_file_name, file_name)))) /* Simply return and print nothing. */ return; diff --git a/sink.c b/sink.c index e8dd8355..164c36d8 100644 --- a/sink.c +++ b/sink.c @@ -1189,14 +1189,14 @@ static int open_mda_sink(struct query *ctl, struct msgblk *msg, ** the worst case (end of string) sp[1] == '\0' */ if (sp[1] == 's' || sp[1] == 'T') { *dp++ = '\''; - strcpy(dp, names); + if (names) strcpy(dp, names); dp += nameslen; *dp++ = '\''; sp++; /* position sp over [sT] */ dp--; /* adjust dp */ } else if (sp[1] == 'F') { *dp++ = '\''; - strcpy(dp, from); + if (from) strcpy(dp, from); dp += fromlen; *dp++ = '\''; sp++; /* position sp over F */ -- cgit v1.2.3