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,

Reply via email to