[SOLVED] Crash: setannotation Trash "/vendor/cmu/cyrus-imapd/expire" ("value.shared" NIL)

Heiko Schlittermann hs at schlittermann.de
Wed Apr 27 09:36:27 UTC 2016


Hi,

just for the records. The dovecot-metadata-plugin found on 
http://hg.dovecot.org/dovecot-metadata-plugin (not in use anymore?)
needs one change to make it compile on Ubuntu 14.04 and probably other
current compilers. And a 2nd change that avoids a crash on deleting
an annotation.

I need this plugin with a dovecot 2.2.9 to store mailbox annotations (expiry
information imported/migrated from a cyrus server, to be more precise).

If dovecot provides ANNOTATION capabilities on it's own, I missed it...
Please correct me, if I'm wrong. In a current clone of dovecot-core I do
not find any traces that indicate support for ANNOATION. But again, I
may be wrong, as I do often.

changeset:   237:219c13a7696d
bookmark:    hs12
tag:         tip
user:        Heiko Schlittermann <hs at schlittermann.de>
date:        Wed Apr 27 11:27:14 2016 +0200
summary:     Check the Value before using strlen()

diff -r 79ce82ce7279 -r 219c13a7696d src/metadata-backend.c
--- a/src/metadata-backend.c    Wed Apr 27 10:37:11 2016 +0200
+++ b/src/metadata-backend.c    Wed Apr 27 11:27:14 2016 +0200
@@ -130,7 +130,7 @@
 
        if (!metadata_entry_is_valid(entry))
                return -METADATA_ERROR_INVALID;
-       if (strlen(metadata_entry_get_value(entry)) > muser->set->maxsize)
+       if (entry->value && strlen(metadata_entry_get_value(entry)) > muser->set->maxsize)
                return -METADATA_ERROR_TOOLARGE;
        if (count_entries(muser) > muser->set->maxentries)
                return -METADATA_ERROR_TOOMANY;

changeset:   236:79ce82ce7279
user:        Heiko Schlittermann <hs at schlittermann.de>
date:        Wed Apr 27 10:37:11 2016 +0200
summary:     make it compile

diff -r b6df1381bb79 -r 79ce82ce7279 src/imap-metadata-plugin.c
--- a/src/imap-metadata-plugin.c        Sun Oct 27 12:50:20 2013 +0100
+++ b/src/imap-metadata-plugin.c        Wed Apr 27 10:37:11 2016 +0200
@@ -448,7 +448,7 @@
 }
 
 
-static bool
+bool
 cmd_getmetadata(struct client_command_context *cmd) {
        int maxsize = 0, depth = 0;
 
@@ -739,7 +739,7 @@
 }
 
 
-static bool
+bool
 cmd_setmetadata(struct client_command_context *cmd) {
        const struct imap_arg *args;
        if (!client_read_args(cmd, 0, 0, &args))


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: Digital signature
URL: <http://dovecot.org/pipermail/dovecot/attachments/20160427/474d5399/attachment-0001.sig>


More information about the dovecot mailing list