]> granicus.if.org Git - neomutt/commitdiff
libaddress: fix group code for degenerate cases
authorRichard Russon <rich@flatcap.org>
Sat, 27 Apr 2019 20:26:38 +0000 (21:26 +0100)
committerRichard Russon <rich@flatcap.org>
Sat, 27 Apr 2019 21:48:41 +0000 (22:48 +0100)
address/group.c

index 9603eaa9c89c9664c7c4b1f5b0c6a364a7219c3c..edcbac9e6e16695a132afef4e2da3290468851d0 100644 (file)
@@ -102,6 +102,9 @@ static void group_remove(struct Group *g)
  */
 void mutt_grouplist_clear(struct GroupList *head)
 {
+  if (!head)
+    return;
+
   struct GroupNode *np = STAILQ_FIRST(head), *next = NULL;
   while (np)
   {
@@ -132,6 +135,9 @@ static bool empty_group(struct Group *g)
  */
 void mutt_grouplist_add(struct GroupList *head, struct Group *group)
 {
+  if (!head || !group)
+    return;
+
   struct GroupNode *np = NULL;
   STAILQ_FOREACH(np, head, entries)
   {
@@ -149,6 +155,9 @@ void mutt_grouplist_add(struct GroupList *head, struct Group *group)
  */
 void mutt_grouplist_destroy(struct GroupList *head)
 {
+  if (!head)
+    return;
+
   struct GroupNode *np = STAILQ_FIRST(head), *next = NULL;
   while (np)
   {
@@ -166,13 +175,11 @@ void mutt_grouplist_destroy(struct GroupList *head)
  */
 static void group_add_addrlist(struct Group *g, struct Address *a)
 {
-  struct Address **p = NULL, *q = NULL;
-
-  if (!g)
-    return;
-  if (!a)
+  if (!g || !a)
     return;
 
+  struct Address **p = NULL, *q = NULL;
+
   for (p = &g->as; *p; p = &((*p)->next))
     ;
 
@@ -236,6 +243,9 @@ static int group_remove_regex(struct Group *g, const char *s)
  */
 void mutt_grouplist_add_addrlist(struct GroupList *head, struct Address *a)
 {
+  if (!head || !a)
+    return;
+
   struct GroupNode *np = NULL;
   STAILQ_FOREACH(np, head, entries)
   {
@@ -252,6 +262,9 @@ void mutt_grouplist_add_addrlist(struct GroupList *head, struct Address *a)
  */
 int mutt_grouplist_remove_addrlist(struct GroupList *head, struct Address *a)
 {
+  if (!head || !a)
+    return -1;
+
   int rc = 0;
   struct GroupNode *np = NULL;
 
@@ -278,6 +291,9 @@ int mutt_grouplist_remove_addrlist(struct GroupList *head, struct Address *a)
 int mutt_grouplist_add_regex(struct GroupList *head, const char *s, int flags,
                              struct Buffer *err)
 {
+  if (!head || !s)
+    return -1;
+
   int rc = 0;
 
   struct GroupNode *np = NULL;
@@ -299,6 +315,9 @@ int mutt_grouplist_add_regex(struct GroupList *head, const char *s, int flags,
  */
 int mutt_grouplist_remove_regex(struct GroupList *head, const char *s)
 {
+  if (!head || !s)
+    return -1;
+
   int rc = 0;
   struct GroupNode *np = NULL;
   STAILQ_FOREACH(np, head, entries)