[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", "a->used, "a->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