[pkg-kolab] Bug#411240: kolab-cyrus-imapd: Corrupt quota files cause data loss

Peter Eisentraut peter_e at gmx.net
Wed Feb 28 13:06:58 CET 2007


Am Samstag, 17. Februar 2007 11:59 schrieb Ulrich P. Klein:
> Package: kolab-cyrus-imapd
> Version: 2.2.13-2
> Severity: grave
> Justification: renders package unusable
>
> Today I discovered that lmtpd segfaulted on any local mail.  After a
> little inveestigating, I found that the problem was caused by the
> following lines in imap/quota_db.c:

Cyrus Team, any ideas on this bug?  The same code exists in the original 
package.

> ---8<------
> int quota_read(struct quota *quota, struct txn **tid, int wrlock)
> {
>     int r;
>     int qrlen;
>     const char *data;
>     int datalen;
>
>     if (!quota->root || !(qrlen = strlen(quota->root)))
>         return IMAP_QUOTAROOT_NONEXISTENT;
>
>     if (wrlock)
>         r = QDB->fetchlock(qdb, quota->root, qrlen, &data, &datalen, tid);
>     else
>         r = QDB->fetch(qdb, quota->root, qrlen, &data, &datalen, tid);
>
>     switch (r) {
>     case CYRUSDB_OK:
>         sscanf(data, "%lu %d", &quota->used, &quota->limit);
>         break;
> ---8<------
>
> An ltrace showed that data pointed to 0 when sscanf was called.  I found
> two files:
>   /var/lib/cyrus/domain/u/ulrich-p-klein.de/quota/k/user.klein
>   /var/lib/cyrus/domain/u/ulrich-p-klein.de/quota/k/user.klein.NEW
> The first file was empty, the second (sorry, I didn't keep it) was 5
> bytes long.  Calling cyrqouta or cyrquota -f didn't help.
>
> After removal of those files, everything worked fine.



More information about the Pkg-Cyrus-imapd-Debian-devel mailing list