]> granicus.if.org Git - neomutt/commitdiff
check library parameters more carefully
authorRichard Russon <rich@flatcap.org>
Sun, 12 May 2019 22:18:41 +0000 (23:18 +0100)
committerRichard Russon <rich@flatcap.org>
Sun, 12 May 2019 22:37:08 +0000 (23:37 +0100)
Some test cases were causing library code to be run with invalid
parameters.  Reject these cases.

email/attach.c
email/parse.c
mutt/charset.c

index f1861bbc4ae69f49c1750a693f66cb0dc3b08a09..caa279a0b69f4a6caf75c7529abaff052cdce609 100644 (file)
@@ -39,7 +39,7 @@
  */
 void mutt_actx_add_attach(struct AttachCtx *actx, struct AttachPtr *attach)
 {
-  if (!actx)
+  if (!actx || !attach)
     return;
 
   if (actx->idxlen == actx->idxmax)
@@ -61,7 +61,7 @@ void mutt_actx_add_attach(struct AttachCtx *actx, struct AttachPtr *attach)
  */
 void mutt_actx_add_fp(struct AttachCtx *actx, FILE *fp_new)
 {
-  if (!actx)
+  if (!actx || !fp_new)
     return;
 
   if (actx->fp_len == actx->fp_max)
@@ -82,7 +82,7 @@ void mutt_actx_add_fp(struct AttachCtx *actx, FILE *fp_new)
  */
 void mutt_actx_add_body(struct AttachCtx *actx, struct Body *new_body)
 {
-  if (!actx)
+  if (!actx || !new_body)
     return;
 
   if (actx->body_len == actx->body_max)
index 5248fca70eb44011e5f4987f9284335bba2c9e75..cd3bd61d38661a171a1a9298c63ad06eb45c187c 100644 (file)
@@ -58,6 +58,9 @@
  */
 void mutt_auto_subscribe(const char *mailto)
 {
+  if (!mailto)
+    return;
+
   if (!AutoSubscribeCache)
     AutoSubscribeCache = mutt_hash_new(200, MUTT_HASH_STRCASECMP | MUTT_HASH_STRDUP_KEYS);
 
index 5065351c5082aebbf55b823194e20f0f7fa17360..a62ba65c9843051b5e709ea8844582802752cadd 100644 (file)
@@ -490,6 +490,7 @@ void mutt_ch_lookup_remove(void)
     FREE(&l->regex.pattern);
     if (l->regex.regex)
       regfree(l->regex.regex);
+    FREE(&l->regex.regex);
     FREE(&l->regex);
     FREE(&l);
   }
@@ -1005,6 +1006,9 @@ void mutt_ch_set_charset(const char *charset)
 char *mutt_ch_choose(const char *fromcode, const char *charsets, const char *u,
                      size_t ulen, char **d, size_t *dlen)
 {
+  if (!fromcode)
+    return NULL;
+
   char *e = NULL, *tocode = NULL;
   size_t elen = 0, bestn = 0;
   const char *q = NULL;