]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dsync: Don't assert-crash if trying to convert mailbox whose name is too long.
authorTimo Sirainen <tss@iki.fi>
Tue, 9 Nov 2010 21:12:35 +0000 (21:12 +0000)
committerTimo Sirainen <tss@iki.fi>
Tue, 9 Nov 2010 21:12:35 +0000 (21:12 +0000)
src/dsync/dsync-worker-local.c

index d4222229343704b5c643d4a0628fd940c4e77861..801f0696bc7d355356c548d8bb742f9d7d52b649 100644 (file)
@@ -1101,6 +1101,14 @@ local_worker_convert_mailbox_name(struct local_dsync_worker *worker,
                        /* probably some reserved name (e.g. dbox-Mails) */
                        name = t_strconcat("_", name, NULL);
                }
+               if (!mailbox_list_is_valid_create_name(ns->list, name)) {
+                       /* name is too long? just give up and generate a
+                          unique name */
+                       uint8_t guid[MAIL_GUID_128_SIZE];
+
+                       mail_generate_guid_128(guid);
+                       name = mail_guid_128_to_string(guid);
+               }
                i_assert(mailbox_list_is_valid_create_name(ns->list, name));
        }
        return name;