From a331218daae581586fccf38136624fabade92163 Mon Sep 17 00:00:00 2001 From: Richard Russon Date: Mon, 10 Apr 2017 13:44:39 +0100 Subject: [PATCH] coverity: add variable - function arg could be NULL/invalid --- attach.c | 6 ++++++ buffer.c | 8 ++++++++ buffy.c | 3 +++ copy.c | 3 +++ crypt-gpgme.c | 6 ++++++ handler.c | 3 +++ init.c | 6 ++++++ lib.c | 2 ++ muttlib.c | 8 ++++++++ parse.c | 3 ++- pgp.c | 3 +++ 11 files changed, 50 insertions(+), 1 deletion(-) diff --git a/attach.c b/attach.c index fc748d29d..b39f0f8b0 100644 --- a/attach.c +++ b/attach.c @@ -702,6 +702,9 @@ save_attachment_open (char *path, int flags) /* returns 0 on success, -1 on error */ int mutt_save_attachment (FILE *fp, BODY *m, char *path, int flags, HEADER *hdr) { + if (!m) + return -1; + if (fp) { @@ -775,6 +778,9 @@ int mutt_save_attachment (FILE *fp, BODY *m, char *path, int flags, HEADER *hdr) } else { + if (!m->filename) + return -1; + /* In send mode, just copy file */ FILE *ofp = NULL, *nfp = NULL; diff --git a/buffer.c b/buffer.c index 4d2594a3f..665dc5aeb 100644 --- a/buffer.c +++ b/buffer.c @@ -116,6 +116,9 @@ int mutt_buffer_printf (BUFFER* buf, const char* fmt, ...) * the buffer is always null-terminated */ static void mutt_buffer_add (BUFFER* buf, const char* s, size_t len) { + if (!buf || !s) + return; + size_t offset; if (buf->dptr + len + 1 > buf->data + buf->dsize) @@ -126,6 +129,8 @@ static void mutt_buffer_add (BUFFER* buf, const char* s, size_t len) safe_realloc ((void**) (void*) &buf->data, buf->dsize); buf->dptr = buf->data + offset; } + if (!buf->dptr) + return; memcpy (buf->dptr, s, len); buf->dptr += len; *(buf->dptr) = '\0'; @@ -143,6 +148,9 @@ void mutt_buffer_addch (BUFFER* buf, char c) int mutt_extract_token (BUFFER *dest, BUFFER *tok, int flags) { + if (!dest || !tok) + return -1; + char ch; char qc = 0; /* quote char */ char *pc; diff --git a/buffy.c b/buffy.c index d2e3926d4..98f0cd42e 100644 --- a/buffy.c +++ b/buffy.c @@ -602,6 +602,9 @@ int mutt_parse_mailboxes (BUFFER *path, BUFFER *s, unsigned long data, BUFFER *e #ifdef USE_NOTMUCH int mutt_parse_virtual_mailboxes (BUFFER *path, BUFFER *s, unsigned long data, BUFFER *err) { + if (!path || !s) + return -1; + BUFFY **tmp; char buf[_POSIX_PATH_MAX + LONG_STRING + 32]; /* path to DB + query + URI "decoration" */ diff --git a/copy.c b/copy.c index 9c73d7af5..55f411feb 100644 --- a/copy.c +++ b/copy.c @@ -60,6 +60,9 @@ mutt_copy_hdr (FILE *in, FILE *out, LOFF_T off_start, LOFF_T off_end, int flags, size_t this_one_len = 0; int error; + if (off_start < 0) + return -1; + if (ftello (in) != off_start) fseeko (in, off_start, SEEK_SET); diff --git a/crypt-gpgme.c b/crypt-gpgme.c index 2477b5e25..1df665209 100644 --- a/crypt-gpgme.c +++ b/crypt-gpgme.c @@ -1141,6 +1141,9 @@ static int show_sig_summary (unsigned long sum, gpgme_ctx_t ctx, gpgme_key_t key, int idx, STATE *s, gpgme_signature_t sig) { + if (!key) + return 1; + int severe = 0; if ((sum & GPGME_SIGSUM_KEY_REVOKED)) @@ -1676,6 +1679,9 @@ int smime_gpgme_verify_one (BODY *sigbdy, STATE *s, const char *tempfile) static BODY *decrypt_part (BODY *a, STATE *s, FILE *fpout, int is_smime, int *r_is_signed) { + if (!a || !s || !fpout) + return NULL; + struct stat info; BODY *tattach = NULL; int err = 0; diff --git a/handler.c b/handler.c index f35b50c6f..803568d2b 100644 --- a/handler.c +++ b/handler.c @@ -1790,6 +1790,9 @@ static int malformed_pgp_encrypted_handler (BODY *b, STATE *s) int mutt_body_handler (BODY *b, STATE *s) { + if (!b || !s) + return -1; + int plaintext = 0; handler_t handler = NULL; int rc = 0; diff --git a/init.c b/init.c index f9638123a..697058985 100644 --- a/init.c +++ b/init.c @@ -4157,6 +4157,9 @@ static int parse_group_context (group_context_t **ctx, BUFFER *buf, BUFFER *s, u #ifdef USE_NOTMUCH static int parse_tag_transforms (BUFFER *b, BUFFER *s, unsigned long data, BUFFER *err) { + if (!b || !s) + return -1; + char *tmp = NULL; while (MoreArgs (s)) @@ -4188,6 +4191,9 @@ static int parse_tag_transforms (BUFFER *b, BUFFER *s, unsigned long data, BUFFE static int parse_tag_formats (BUFFER *b, BUFFER *s, unsigned long data, BUFFER *err) { + if (!b || !s) + return -1; + char *tmp = NULL; while (MoreArgs (s)) diff --git a/lib.c b/lib.c index 401930c1f..f256008c7 100644 --- a/lib.c +++ b/lib.c @@ -183,6 +183,8 @@ void safe_realloc (void *ptr, size_t siz) void safe_free (void *ptr) /* __SAFE_FREE_CHECKED__ */ { + if (!ptr) + return; void **p = (void **)ptr; if (*p) { diff --git a/muttlib.c b/muttlib.c index 3d77ae4f7..80c4c40df 100644 --- a/muttlib.c +++ b/muttlib.c @@ -110,6 +110,9 @@ void mutt_adv_mktemp (char *s, size_t l) /* create a send-mode duplicate from a receive-mode body */ int mutt_copy_body (FILE *fp, BODY **tgt, BODY *src) { + if (!tgt || !src) + return -1; + char tmp[_POSIX_PATH_MAX]; BODY *b = NULL; @@ -1872,12 +1875,17 @@ int state_printf (STATE *s, const char *fmt, ...) void state_mark_attach (STATE *s) { + if (!s || !s->fpout) + return; if ((s->flags & MUTT_DISPLAY) && (mutt_strcmp (Pager, "builtin") == 0)) state_puts (AttachmentMarker, s); } void state_attach_puts (const char *t, STATE *s) { + if (!t || !s || !s->fpout) + return; + if (*t != '\n') state_mark_attach (s); while (*t) { diff --git a/parse.c b/parse.c index 83c93bf62..136ab801c 100644 --- a/parse.c +++ b/parse.c @@ -1346,7 +1346,8 @@ int mutt_parse_rfc822_line (ENVELOPE *e, HEADER *hdr, char *line, char *p, short done: - *lastp = last; + if (lastp) + *lastp = last; return matched; } diff --git a/pgp.c b/pgp.c index f4f20c84c..47081fc1f 100644 --- a/pgp.c +++ b/pgp.c @@ -804,6 +804,9 @@ void pgp_extract_keys_from_attachment_list (FILE *fp, int tag, BODY *top) static BODY *pgp_decrypt_part (BODY *a, STATE *s, FILE *fpout, BODY *p) { + if (!a || !s || !fpout || !p) + return NULL; + char buf[LONG_STRING]; FILE *pgpin = NULL, *pgpout = NULL, *pgperr = NULL, *pgptmp = NULL; struct stat info; -- 2.40.0