diff options
author | Matthias Andree <matthias.andree@gmx.de> | 2019-05-14 22:46:44 +0200 |
---|---|---|
committer | Matthias Andree <matthias.andree@gmx.de> | 2019-05-14 22:47:28 +0200 |
commit | 124518ae5fba9e352a9cf8a8d7c1a8160475d10b (patch) | |
tree | 12a8d57a0de3e20bc28bfae550631bce49b9723e | |
parent | b8f5a610eac4a90fc5e8f22c65184f7797abf7bb (diff) | |
download | fetchmail-124518ae5fba9e352a9cf8a8d7c1a8160475d10b.tar.gz fetchmail-124518ae5fba9e352a9cf8a8d7c1a8160475d10b.tar.bz2 fetchmail-124518ae5fba9e352a9cf8a8d7c1a8160475d10b.zip |
In-depth robustness.
Reported by: clang static analyzer (clang-8)
-rw-r--r-- | driver.c | 5 | ||||
-rw-r--r-- | report.c | 2 | ||||
-rw-r--r-- | sink.c | 4 |
3 files changed, 6 insertions, 5 deletions
@@ -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); @@ -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; @@ -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 */ |