If a non-user mailbox is being considered for promotion to a USER
event in sync_client, it trys to xstrdup the folder name starting
at the user name - except that's a NULL string and it segfaults.

This patch tests the result of mboxname_isusermailbox in the
conditional instead, and then makes the copy only if it's non-NULL.
---
 imap/sync_client.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/imap/sync_client.c b/imap/sync_client.c
index d62c833..8a70974 100644
--- a/imap/sync_client.c
+++ b/imap/sync_client.c
@@ -3197,12 +3197,12 @@ static int do_sync(const char *filename)
            if (r) {
                /* promote failed personal mailboxes to USER */
                struct sync_folder *folder;
-               char *userid, *p;
+               char *userid, *p, *useridp;
 
                for (folder = folder_list->head; folder && folder->mark;
                     folder = folder->next);
-               if (folder &&
-                   (userid = xstrdup(mboxname_isusermailbox(folder->name, 
0)))) {
+               if (folder && (useridp = mboxname_isusermailbox(folder->name, 
0))) {
+                   userid = xstrdup(useridp);
                    if ((p = strchr(userid, '.'))) *p = '\0';
                    folder->mark = 1;
                    if (--folder_list->count == 0) r = 0;
-- 
1.5.6.3

Reply via email to