GNU bug report logs - #13209
23.3; RMAIL rmail-edit-current-message damages MIME messages

Previous Next

Package: emacs;

Reported by: worley <at> alum.mit.edu (Dale R. Worley)

Date: Mon, 17 Dec 2012 16:56:02 UTC

Severity: serious

Tags: confirmed, fixed

Merged with 9840

Found in version 23.3

Fixed in version 24.0.92

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 13209 in the body.
You can then email your comments to 13209 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#13209; Package emacs. (Mon, 17 Dec 2012 16:56:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to worley <at> alum.mit.edu (Dale R. Worley):
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 17 Dec 2012 16:56:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: worley <at> alum.mit.edu (Dale R. Worley)
To: bug-gnu-emacs <at> gnu.org
Subject: 23.3; RMAIL rmail-edit-current-message damages MIME messages
Date: Mon, 17 Dec 2012 10:46:42 -0500
-----

Summary:

In RMAIL, if a message is a MIME message that is not just a
text/plain, executing rmail-edit-current-message (`e') on the message
destroys its contents, even if no changes are made before exiting
(with `C-c C-c').  A simple change to block rmail-edit-current-message
on MIME messages is proposed.

Emacs version:

GNU Emacs 23.3.1 (i686-redhat-linux-gnu, GTK+ Version 2.24.8) of 2012-11-17 on buildvm-19.phx2.fedoraproject.org
This is current for "Fedora release 16 (Verne)".

How to reproduce:

Create a mail file containing a MIME multipart message.  Open the file
with RMAIL and select the message.  The resulting display is something
like this:

    Date: Mon, 17 Dec 2012 09:47:08 -0500
    From: Dale Worley <worley <at> c-66-31-108-177.hsd1.ma.comcast.net>
    To: worley <at> freeze.ariadne.com
    Subject: Test 1

    [1:text/plain Hide]
    Test 1
    [2:image/jpeg Show Save:airplant.jpeg (282kB)]

Edit the message by typing `e', moving the cursor to after "Test 1",
then adding some text.  The resulting display is:

    Date: Mon, 17 Dec 2012 09:47:08 -0500
    From: Dale Worley <worley <at> c-66-31-108-177.hsd1.ma.comcast.net>
    To: worley <at> freeze.ariadne.com
    Subject: Test 1

    [1:text/plain Hide]
    Test 1
    More text.
    [2:image/jpeg Show Save:airplant.jpeg (282kB)]

Type `C-c C-c' to exit rmail-edit mode.

Save the file with `C-x C-s'.

Now open the mail file literally and find the message that you edited.
What you will see is that the message's body is now what was
*displayed* for it during the editing session.  For example:

    From worley <at> c-66-31-108-177.hsd1.ma.comcast.net  Mon Dec 17 09:47:08 2012
    Return-Path: <worley <at> c-66-31-108-177.hsd1.ma.comcast.net>
    Received: from freeze.ariadne.com (freeze.ariadne.com [127.0.0.1])
	    by freeze.ariadne.com (8.14.5/8.14.5) with ESMTP id qBHEl8OO007938
	    for <worley <at> freeze.ariadne.com>; Mon, 17 Dec 2012 09:47:08 -0500
    Received: (from worley <at> localhost)
	    by freeze.ariadne.com (8.14.5/8.14.5/Submit) id qBHEl8Tp007937;
	    Mon, 17 Dec 2012 09:47:08 -0500
    Date: Mon, 17 Dec 2012 09:47:08 -0500
    Message-Id: <201212171447.qBHEl8Tp007937 <at> freeze.ariadne.com>
    From: Dale Worley <worley <at> c-66-31-108-177.hsd1.ma.comcast.net>
    To: worley <at> freeze.ariadne.com
    Subject: Test 1
    Content-type: text/plain; charset=us-ascii
    Mime-Version: 1.0
    Content-Type: multipart/mixed; boundary="----------make-mime-1355755615-7926"
    X-Attachments: airplant.jpeg;
    X-RMAIL-ATTRIBUTES: --E-----

    [1:text/plain Hide]
    Test 1
    More text.
    [2:image/jpeg Show Save:airplant.jpeg (282kB)]

In this case, the image/jpeg component is irreversably lost.

Proposed partial fix:

The following change prevents rmail-edit from being invoked on a
message if it is a MIME message, except when the entire body is
text/plain:

    (defun rmail-edit-current-message ()
      "Edit the contents of this message."
      (interactive)
      (if (zerop rmail-total-messages)
          (error "No messages in this buffer"))
+     ;; If the message is MIME, only edit it if the whole body is text/plain.
+     ;; (This depends on the particular return value of (rmail-mime-message-p).)
+     (let ((mm (rmail-mime-message-p)))
+       (if (and mm
+                (not (string-equal (car (rmail-mime-entity-type mm))
+                                   "text/plain")))
+           (error "Non-text MIME messages cannot be edited")))
      (rmail-modify-format)
      ...

This change also blocks invocation of rmail-edit from the
rmail-summary buffer under the same circumstances.

This change is deficient in that it depends on the return value of
rmail-mime-message-p, which is only specified as nil vs. non-nil.
(There may be a better function to call for this information than
rmail-mime-message-p.)

A better change would allow the user to edit MIME messages when they
are displayed in "raw" mode (as a consequence of the `v' command).

A much better change would allow the user to edit text components of
MIME messaegs, preserving the non-text components.

-----


In GNU Emacs 23.3.1 (i686-redhat-linux-gnu, GTK+ Version 2.24.8)
 of 2012-11-17 on buildvm-19.phx2.fedoraproject.org
Windowing system distributor `Fedora Project', version 11.0.11104000
configured using `configure  '--build=i686-redhat-linux-gnu' '--host=i686-redhat-linux-gnu' '--program-prefix=' '--disable-dependency-tracking' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--with-dbus' '--with-gif' '--with-jpeg' '--with-png' '--with-rsvg' '--with-tiff' '--with-xft' '--with-xpm' '--with-x-toolkit=gtk' 'build_alias=i686-redhat-linux-gnu' 'host_alias=i686-redhat-linux-gnu' 'CFLAGS=-DMAIL_USE_LOCKF -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables' 'LDFLAGS=-Wl,-z,relro ''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: C
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Fundamental

Minor modes in effect:
  shell-dirtrack-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t

Recent input:
a n g e SPC w o u l d SPC a l l o w SPC t h e SPC u 
s e r SPC t o SPC e d i t SPC t e x t SPC c o m p o 
n e n t s SPC o f SPC M I M E SPC m e s s a e g s , 
SPC p r e s e r v i c <backspace> n g SPC t C-a C-o 
C-o A SPC b e t t e r SPC c h a n g e SPC w o u l d 
SPC a l l o w SPC t h e SPC u s e r SPC t o SPC e d 
i t SPC M I M E S-SPC m e s s a g e s SPC a s SPC l 
o n <M-backspace> <M-backspace> w h e n SPC t h e y 
SPC w e <M-backspace> a r e SPC d i s p l a y e d SPC 
i n SPC " r a w " SPC m o d e SPC ( a s SPC a SPC c 
o n s e q u e n c e SPC o f SPC t h e SPC ` v ' SPC 
c o m m a n d ) . M-q C-n C-n M-q C-n h e SPC n o n 
- t e x t SPC c o m p o n e n t s . <return> <return> 
<backspace> M-< M-> C-x s <switch-frame> C-x b * i 
<tab> <return> SPC <backspace> M-< C-s b u g C-a C-n 
<switch-frame> C-x 5 2 <switch-frame> M-x r e p o r 
t - e m a <tab> <return>

Recent messages:
Replaced 4 occurrences
Mark set [2 times]
Auto-saving...done
Mark set
Auto-saving...done
Mark set [2 times]
(No files need saving)
Auto-saving...
Mark set
Mark saved where search started

Load-path shadows:
/home/worley/emacs/rmail-spam-filter hides /usr/share/emacs/23.3/lisp/mail/rmail-spam-filter

Features:
(shadow emacsbug tabify noutline outline easy-mmode edmacro kmacro
debug help-fns rmailedit rmailout help-mode view jka-compr info
mule-util dired-aux dired rmailsum cookie1 ispell newcomment rmailmm
cl cl-19 mailalias message sendmail ecomplete rfc822 mml easymenu
mml-sec password-cache mm-decode mm-bodies mm-encode mailcap
mailabbrev nnheader gnus-util netrc gmm-utils wid-edit mailheader
canlock sha1 hex-util hashcash mail-parse rfc2231 rmail rfc2047
rfc2045 ietf-drums time-date qp mm-util mail-prsvr mail-utils
multi-isearch shell comint ring cc-styles cc-align cc-engine cc-vars
cc-defs regexp-opt tooltip ediff-hook vc-hooks lisp-float-type mwheel
x-win x-dnd font-setting tool-bar dnd fontset image fringe lisp-mode
register page menu-bar rfn-eshadow timer select scroll-bar mldrag
mouse jit-lock font-lock syntax facemenu font-core frame cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev
loaddefs button minibuffer faces cus-face files text-properties
overlay md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote make-network-process dbusbind
system-font-setting font-render-setting gtk x-toolkit x multi-tty
emacs)




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#13209; Package emacs. (Mon, 17 Dec 2012 17:06:02 GMT) Full text and rfc822 format available.

Message #8 received at 13209 <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: worley <at> alum.mit.edu (Dale R. Worley)
Cc: 13209 <at> debbugs.gnu.org
Subject: Re: bug#13209: 23.3;
	RMAIL rmail-edit-current-message damages MIME messages
Date: Mon, 17 Dec 2012 12:03:36 -0500
Dale R. Worley wrote:

> In RMAIL, if a message is a MIME message that is not just a
> text/plain, executing rmail-edit-current-message (`e') on the message
> destroys its contents, even if no changes are made before exiting
> (with `C-c C-c').

Thanks for report. This was fixed in Emacs 24.1.
http://debbugs.gnu.org/9840

> GNU Emacs 23.3.1 (i686-redhat-linux-gnu, GTK+ Version 2.24.8) of 2012-11-17 on buildvm-19.phx2.fedoraproject.org





Forcibly Merged 9840 13209. Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Mon, 17 Dec 2012 17:06:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 15 Jan 2013 12:24:03 GMT) Full text and rfc822 format available.

This bug report was last modified 12 years and 159 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.