[Dovecot] Dovecot v1.2 assert() in ACL

Steffen Kaiser skdovecot at smail.inf.fh-brs.de
Mon Jun 15 16:23:05 EEST 2009


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello,

using Dovecot v1.2 changeset:   9126:b745911012bb

ACL config:
   acl = vfile

   # To let users LIST mailboxes shared by other users, Dovecot needs a
   # shared mailbox dictionary. For example:
   acl_shared_dict = file:/var/cache/dovecot/shared-mailboxes


telnet localhost imap
0 login ....
1 getacl Sent
* ACL "Sent" "testuser" lrwstipekxacd
1 OK Getacl completed.
2 setacl Sent timo +lrwtsd
2 OK Setacl complete.
3 setacl Sent timo -lrwtsd
Aborted (core dumped)

cat /var/cache/dovecot/shared-mailboxes
shared/shared-boxes/user/timo/testuser
1

===

The assert happens when the last right is to remove:

setacl I user +lwp
setacl I user -l
setacl I user -w
setacl I user -p
Abort

===

log:
Panic: file ../../../src/lib/array.h: line 162 (array_idx_i): assertion failed: (idx * array->element_size < array->buffer->used)
Raw backtrace: imap [0x80e9ed0] -> imap(i_syslog_fatal_handler+0x2d) [0x80e9f6d] -> imap [0x80e97da] -> /usr/local/dovecot-1.2.rc5unpatched/lib/dovecot/imap/lib01_acl_plugin.so [0xb7e4ede4] -> /usr/local/dovecot-1.2.rc5unpatched/lib/dovecot/imap/lib01_acl_plugin.so [0xb7e4ee40] -> /usr/local/dovecot-1.2.rc5unpatched/lib/dovecot/imap/lib01_acl_plugin.so [0xb7e50c3b] -> /usr/local/dovecot-1.2.rc5unpatched/lib/dovecot/imap/lib01_acl_plugin.so(acl_object_update+0x18) [0xb7e4de98] -> /usr/local/dovecot-1.2.rc5unpatched/lib/dovecot/imap/lib02_imap_acl_plugin.so [0xb7f951cf] -> imap [0x8063dbc] -> imap [0x8063e6b] -> imap(client_handle_input+0x3f) [0x8063fbf] -> imap(client_input+0x5f) [0x8064b2f] -> imap(io_loop_handler_run+0x110) [0x80f2a10] -> imap(io_loop_run+0x28) [0x80f1ad8] -> imap(main+0x764) [0x806cf34] -> /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xc8) [0xb7e6eea8] -> imap [0x805cb71]

(gdb) bt full
#0  0xb7f99410 in ?? ()
No symbol table info available.
#1  0xbfe106ac in ?? ()
No symbol table info available.
#2  0x00000006 in ?? ()
No symbol table info available.
#3  0x000054a6 in ?? ()
No symbol table info available.
#4  0xb7e82811 in raise () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#5  0xb7e83fb9 in abort () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#6  0x080e9edd in default_fatal_finish (type=<value optimized out>, status=0)
     at failures.c:160
         backtrace = 0x81205e0 "imap [0x80e9ed0] -> imap(i_syslog_fatal_handler+0x2d) [0x80e9f6d] -> imap [0x80e97da] -> /usr/local/dovecot-1.2.rc5unpatched/lib/dovecot/imap/lib01_acl_plugin.so [0xb7e4ede4] -> /usr/local/dovecot-1.2"...
#7  0x080e9f6d in i_syslog_fatal_handler (type=LOG_TYPE_PANIC, status=0,
     fmt=0xb7e55714 "file %s: line %d (%s): assertion failed: (%s)",
     args=0xbfe10854 "\"Y?") at failures.c:315
No locals.
#8  0x080e97da in i_panic (
     format=0xb7e55714 "file %s: line %d (%s): assertion failed: (%s)")
     at failures.c:207
         args = 0xbfe10854 "\"Y?"
#9  0xb7e4ede4 in modify_right_list (pool=0x8154330, rightsp=0x8154450,
     modify_rights=0x8120338, modify_mode=ACL_MODIFY_MODE_REMOVE)
     at ../../../src/lib/array.h:162
         old_rights = (const char * const *) 0x8154360
         new_rights = (const char * const *) 0xbfe10894
         null = 0x0
#10 0xb7e4ee40 in vfile_object_modify_right (aclobj=0x81542d0, idx=0,
     update=0xbfe10a2c) at acl-backend-vfile.c:940
         c1 = 74
         c2 = <value optimized out>
#11 0xb7e50c3b in acl_backend_vfile_object_update (_aclobj=0x81542d0,
     update=0xbfe10a2c) at acl-backend-vfile.c:1099
         str = <value optimized out>
         i = <value optimized out>
         ret = <value optimized out>
         output = <value optimized out>
         rights = <value optimized out>
         aclobj = (struct acl_object_vfile *) 0x0
         dotlock = <value optimized out>
         path = <value optimized out>
         i = 0
         fd = 7
         changed = <value optimized out>
         __PRETTY_FUNCTION__ = "acl_backend_vfile_object_update"
#12 0xb7e4de98 in acl_object_update (aclobj=0x81542d0, update=0xbfe10a2c)
     at acl-api.c:137
No locals.
#13 0xb7f951cf in cmd_setacl (cmd=0x8130a10) at imap-acl-plugin.c:574
         ns = (struct mail_namespace *) 0x8129988
         storage = <value optimized out>
         box = (struct mailbox *) 0x8154f88
         backend = (struct acl_backend *) 0x812e2f0
         update = {rights = {id_type = ACL_ID_USER,
     identifier = 0x8135b18 "timo", rights = 0x8120338, neg_rights = 0x0,
     global = 0}, modify_mode = ACL_MODIFY_MODE_REMOVE,
   neg_modify_mode = ACL_MODIFY_MODE_REMOVE}
         mailbox = 0x8135b10 "Sent"
         identifier = 0x8135b18 "timo"
         rights = 0x8135b21 "lrwtsd"
         error = <value optimized out>
         negative = false
#14 0x08063dbc in client_command_input (cmd=0x8130a10) at client.c:607
         client = (struct client *) 0x812f748
         command = <value optimized out>
         __PRETTY_FUNCTION__ = "client_command_input"
#15 0x08063e6b in client_command_input (cmd=0x8130a10) at client.c:656
         client = (struct client *) 0x812f748
         command = (struct command *) 0x54a6
         __PRETTY_FUNCTION__ = "client_command_input"
#16 0x08063fbf in client_handle_input (client=0x812f748) at client.c:697
         _data_stack_cur_id = 3
         remove_io = <value optimized out>
         handled_commands = false
         __PRETTY_FUNCTION__ = "client_handle_input"
#17 0x08064b2f in client_input (client=0x812f748) at client.c:748
         cmd = <value optimized out>
         output = (struct ostream *) 0x813098c
         bytes = 27
         __PRETTY_FUNCTION__ = "client_input"
#18 0x080f2a10 in io_loop_handler_run (ioloop=0x8128ac8) at ioloop-epoll.c:208
         ctx = <value optimized out>
         event = (const struct epoll_event *) 0x8128c10
         list = (struct io_list *) 0x812f808
         io = (struct io_file *) 0x812f7e0
         tv = {tv_sec = 1789, tv_usec = 997764}
         t_id = 2
         msecs = <value optimized out>
         ret = 1
         i = 0
         j = 0
         call = <value optimized out>
#19 0x080f1ad8 in io_loop_run (ioloop=0x8128ac8) at ioloop.c:338
No locals.
#20 0x0806cf34 in main (argc=Cannot access memory at address 0x54a6
) at main.c:323
         buf = <value optimized out>


- -- 
Steffen Kaiser
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iQEVAwUBSjZLO3WSIuGy1ktrAQIiQQf+OVIEEnHua9i/f282/LLGyo48jQMQjq6b
VsxUuS6pwPc6HNq16EUNfWOEA6F1/dItNLW0LbvG4bOFwtGv5HnfrzUkkf0WwZun
RrVvuXCD+5vF9pMJMbilhGm4h+js+Ymu9dnl43Y64l+7t7lDMPl/JYhGgTYPFF2g
7AgNfwaRG0G4G6zQrjQr9TdefCpq9esZadQwiYMMTWTZA1krfj4QW2ITTeoKaEIL
gOR6wjMWVCw6XTYYoLG9dXXJ989U3yhXEu8aXkjAZjdf6Pb/nSrrTluLDgawK65+
IlIIVD5Nx/sqsVQAZ9dK9WGNdG4i6RK/1MZH80bomJ8Ot+KrhW76oQ==
=d3r4
-----END PGP SIGNATURE-----


More information about the dovecot mailing list