Package: mutt
Version: 1.5.20-4
Severity: normal
This is upstream bug http://dev.mutt.org/trac/ticket/969
which is old.
I wrote a fix, attached, that remove the CHECK_READONLY in various place
and only use CHECK_ACL to check the permission.
I can provide more explanation/information if needed.
The patch is made to be put at last in misc/fix-acl. I can rework it if
needed.
-- Package-specific info:
Mutt 1.5.20 (2009-06-14)
Copyright (C) 1996-2009 Michael R. Elkins and others.
Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.
Mutt is free software, and you are welcome to redistribute it
under certain conditions; type `mutt -vv' for details.
System: Linux 2.6.30-1-amd64 (x86_64)
ncurses: ncurses 5.7.20090803 (compiled with 5.7)
libidn: 1.15 (compiled with 1.15)
hcache backend: GDBM version 1.8.3. 10/15/2002 (built Jul 9 2009 11:48:41)
Compile options:
-DOMAIN
+DEBUG
-HOMESPOOL +USE_SETGID +USE_DOTLOCK +DL_STANDALONE +USE_FCNTL -USE_FLOCK
+USE_POP +USE_IMAP +USE_SMTP
-USE_SSL_OPENSSL +USE_SSL_GNUTLS +USE_SASL +USE_GSS +HAVE_GETADDRINFO
+HAVE_REGCOMP -USE_GNU_REGEX
+HAVE_COLOR +HAVE_START_COLOR +HAVE_TYPEAHEAD +HAVE_BKGDSET
+HAVE_CURS_SET +HAVE_META +HAVE_RESIZETERM
+CRYPT_BACKEND_CLASSIC_PGP +CRYPT_BACKEND_CLASSIC_SMIME +CRYPT_BACKEND_GPGME
-EXACT_ADDRESS -SUN_ATTACHMENT
+ENABLE_NLS -LOCALES_HACK +COMPRESSED +HAVE_WC_FUNCS +HAVE_LANGINFO_CODESET
+HAVE_LANGINFO_YESEXPR
+HAVE_ICONV -ICONV_NONTRANS +HAVE_LIBIDN +HAVE_GETSID +USE_HCACHE
-ISPELL
SENDMAIL="/usr/sbin/sendmail"
MAILPATH="/var/mail"
PKGDATADIR="/usr/share/mutt"
SYSCONFDIR="/etc"
EXECSHELL="/bin/sh"
MIXMASTER="mixmaster"
To contact the developers, please mail to <[email protected]>.
To report a bug, please visit http://bugs.mutt.org/.
patch-1.5.13.cd.ifdef.2
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.30-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=C, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages mutt depends on:
ii libc6 2.9-26 GNU C Library: Shared libraries
ii libcomerr2 1.41.9-1 common error description library
ii libgdbm3 1.8.3-6 GNU dbm database routines (runtime
ii libgnutls26 2.8.4-1 the GNU TLS library - runtime libr
ii libgpg-error0 1.6-1 library for common error values an
ii libgpgme11 1.2.0-1 GPGME - GnuPG Made Easy
ii libgssapi-krb5-2 1.7dfsg~beta3-1 MIT Kerberos runtime libraries - k
ii libidn11 1.15-1 GNU Libidn library, implementation
ii libk5crypto3 1.7dfsg~beta3-1 MIT Kerberos runtime libraries - C
ii libkrb5-3 1.7dfsg~beta3-1 MIT Kerberos runtime libraries
ii libncursesw5 5.7+20090803-2 shared libraries for terminal hand
ii libsasl2-2 2.1.23.dfsg1-1.1 Cyrus SASL - authentication abstra
Versions of packages mutt recommends:
ii exim4-daemon-light [mai 4.69-11+b1 lightweight Exim MTA (v4) daemon
ii libsasl2-modules 2.1.23.dfsg1-1.1 Cyrus SASL - pluggable authenticat
ii locales 2.9-26 GNU C Library: National Language (
ii mime-support 3.46-1 MIME files 'mime.types' & 'mailcap
Versions of packages mutt suggests:
ii aspell 0.60.6-2 GNU Aspell spell-checker
ii ca-certificates 20090814 Common CA certificates
ii gnupg 1.4.10-2 GNU privacy guard - a free PGP rep
pn mixmaster <none> (no description available)
ii openssl 0.9.8k-5 Secure Socket Layer (SSL) binary a
pn urlview <none> (no description available)
Versions of packages mutt is related to:
ii mutt 1.5.20-4 text-based mailreader supporting M
ii mutt-dbg 1.5.20-4 debugging symbols for mutt
pn mutt-patched <none> (no description available)
-- no debconf information
Index: mutt-1.5.20/curs_main.c
===================================================================
--- mutt-1.5.20.orig/curs_main.c 2009-10-01 14:59:29.000000000 +0200
+++ mutt-1.5.20/curs_main.c 2009-10-01 14:59:30.000000000 +0200
@@ -819,7 +819,6 @@
CHECK_MSGCOUNT;
CHECK_VISIBLE;
- CHECK_READONLY;
CHECK_ACL(M_ACL_DELETE, _("delete message(s)"));
CHECK_ATTACH;
@@ -987,7 +986,6 @@
CHECK_MSGCOUNT;
CHECK_VISIBLE;
- CHECK_READONLY;
CHECK_ACL(M_ACL_DELETE, _("undelete message(s)"));
if (mutt_pattern_func (M_UNDELETE, _("Undelete messages matching: ")) == 0)
@@ -1020,7 +1018,6 @@
CHECK_MSGCOUNT;
CHECK_VISIBLE;
- CHECK_READONLY;
{
int oldvcount = Context->vcount;
int oldcount = Context->msgcount;
@@ -1273,7 +1270,6 @@
CHECK_MSGCOUNT;
CHECK_VISIBLE;
- CHECK_READONLY;
CHECK_ACL(M_ACL_DELETE, _("link threads"));
if ((Sort & SORT_MASK) != SORT_THREADS)
@@ -1541,7 +1537,6 @@
CHECK_MSGCOUNT;
CHECK_VISIBLE;
- CHECK_READONLY;
CHECK_ACL(M_ACL_WRITE, _("flag message"));
if (tag)
@@ -1578,7 +1573,6 @@
CHECK_MSGCOUNT;
CHECK_VISIBLE;
- CHECK_READONLY;
CHECK_ACL(M_ACL_SEEN, _("toggle new"));
if (tag)
@@ -1833,7 +1827,6 @@
CHECK_MSGCOUNT;
CHECK_VISIBLE;
- CHECK_READONLY;
CHECK_ACL(M_ACL_DELETE, _("delete message"));
if (tag)
@@ -1877,7 +1870,6 @@
CHECK_MSGCOUNT;
CHECK_VISIBLE;
- CHECK_READONLY;
CHECK_ACL(M_ACL_DELETE, _("delete message(s)"));
rc = mutt_thread_set_flag (CURHDR, M_DELETE, 1,
@@ -1917,7 +1909,6 @@
CHECK_MSGCOUNT;
CHECK_VISIBLE;
- CHECK_READONLY;
CHECK_ATTACH;
CHECK_ACL(M_ACL_INSERT, _("edit message"));
@@ -2049,7 +2040,6 @@
CHECK_MSGCOUNT;
CHECK_VISIBLE;
- CHECK_READONLY;
CHECK_ACL(M_ACL_SEEN, _("mark message(s) as read"));
rc = mutt_thread_set_flag (CURHDR, M_READ, 1,
@@ -2139,7 +2129,6 @@
CHECK_MSGCOUNT;
CHECK_VISIBLE;
- CHECK_READONLY;
CHECK_ACL(M_ACL_DELETE, _("undelete message"));
if (tag)
@@ -2168,7 +2157,6 @@
CHECK_MSGCOUNT;
CHECK_VISIBLE;
- CHECK_READONLY;
CHECK_ACL(M_ACL_DELETE, _("undelete message(s)"));
rc = mutt_thread_set_flag (CURHDR, M_DELETE, 0,
Index: mutt-1.5.20/flags.c
===================================================================
--- mutt-1.5.20.orig/flags.c 2009-10-01 14:59:29.000000000 +0200
+++ mutt-1.5.20/flags.c 2009-10-01 14:59:30.000000000 +0200
@@ -33,9 +33,6 @@
int flagged = ctx->flagged;
int update = 0;
- if (ctx->readonly && flag != M_TAG)
- return; /* don't modify anything if we are read-only */
-
switch (flag)
{
case M_DELETE:
Index: mutt-1.5.20/pager.c
===================================================================
--- mutt-1.5.20.orig/pager.c 2009-10-01 14:59:29.000000000 +0200
+++ mutt-1.5.20/pager.c 2009-10-01 14:59:30.000000000 +0200
@@ -2319,7 +2319,6 @@
case OP_PURGE_MESSAGE:
case OP_DELETE:
CHECK_MODE(IsHeader (extra));
- CHECK_READONLY;
CHECK_ACL(M_ACL_DELETE, _("delete message"));
mutt_set_flag (Context, extra->hdr, M_DELETE, 1);
@@ -2352,7 +2351,6 @@
case OP_DELETE_THREAD:
case OP_DELETE_SUBTHREAD:
CHECK_MODE(IsHeader (extra));
- CHECK_READONLY;
CHECK_ACL(M_ACL_DELETE, _("delete message(s)"));
r = mutt_thread_set_flag (extra->hdr, M_DELETE, 1,
@@ -2472,7 +2470,6 @@
case OP_FLAG_MESSAGE:
CHECK_MODE(IsHeader (extra));
- CHECK_READONLY;
CHECK_ACL(M_ACL_WRITE, "flag message");
mutt_set_flag (Context, extra->hdr, M_FLAG, !extra->hdr->flagged);
@@ -2628,7 +2625,6 @@
case OP_TOGGLE_NEW:
CHECK_MODE(IsHeader (extra));
- CHECK_READONLY;
CHECK_ACL(M_ACL_SEEN, _("toggle new"));
if (extra->hdr->read || extra->hdr->old)
@@ -2647,7 +2643,6 @@
case OP_UNDELETE:
CHECK_MODE(IsHeader (extra));
- CHECK_READONLY;
CHECK_ACL(M_ACL_DELETE, _("undelete message"));
mutt_set_flag (Context, extra->hdr, M_DELETE, 0);
@@ -2663,7 +2658,6 @@
case OP_UNDELETE_THREAD:
case OP_UNDELETE_SUBTHREAD:
CHECK_MODE(IsHeader (extra));
- CHECK_READONLY;
CHECK_ACL(M_ACL_DELETE, _("undelete message(s)"));
r = mutt_thread_set_flag (extra->hdr, M_DELETE, 0,