From: "Arne Jørgensen" <arne@arnested.dk>
Cc: Simon Josefsson <simon@josefsson.org>
Subject: S/MIME verification/decryption of MIME parts (patch)
Date: Sat, 26 Feb 2005 00:16:29 +0100 [thread overview]
Message-ID: <87r7j4xmb6.fsf@seamus.arnested.dk> (raw)
[-- Attachment #1: Type: text/plain, Size: 821 bytes --]
Hi,
I think I mentioned earlier that there is a bug when you try to
S/MIEM-verify/decrypt a signed/encrypted MIME part.
I traced the bug to be that when `mm-dissect-buffer' is called on the
MIME parts there is no longer a "From:" field to compare against.
The attached patch fixes this by passing the from field on from
`mm-dissect-buffer' to `mm-dissect-multipart' and then again to
`mm-dissect-buffer'.
Although this might seem to be a rare case it happens quite often on
mailing list when they add unsubscribe information at the end of the
mail in a MIME part. Withut this patch a signed message would end up
saying "sender adress forge". I always thought the mailing list screw
some headers, but it turned out to be Gnus instead ;-)
Have a nice weekend.
Kind reagrds,
--
Arne Jørgensen <http://arnested.dk/>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: mm-decode.patch --]
[-- Type: text/x-patch, Size: 3679 bytes --]
Index: lisp/ChangeLog
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/ChangeLog,v
retrieving revision 7.645
diff -u -p -r7.645 ChangeLog
--- lisp/ChangeLog 25 Feb 2005 19:57:07 -0000 7.645
+++ lisp/ChangeLog 25 Feb 2005 23:03:41 -0000
@@ -1,3 +1,12 @@
+2005-02-26 Arne J^[,Ax^[(Brgensen <arne@arnested.dk>
+
+ * mm-decode.el (mm-dissect-buffer): Pass the from field on to
+ `mm-dissect-multipart' and receive the from field as an (optional)
+ argument from `mm-dissect-multipart'.
+ (mm-dissect-multipart): Receive the from field as an argument and
+ pass it on when we call `mm-dissect-buffer' on MIME parts. Fixes
+ verification/decryption of signed/encrypted MIME parts.
+
2005-02-25 Teodor Zlatanov <tzz@lifelogs.com>
* gnus-sum.el (gnus-summary-move-article): set
Index: lisp/mm-decode.el
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/mm-decode.el,v
retrieving revision 7.19
diff -u -p -r7.19 mm-decode.el
--- lisp/mm-decode.el 13 Feb 2005 04:44:41 -0000 7.19
+++ lisp/mm-decode.el 25 Feb 2005 23:03:42 -0000
@@ -509,10 +509,10 @@ Postpone undisplaying of viewers for typ
(message "Destroying external MIME viewers")
(mm-destroy-parts mm-postponed-undisplay-list)))
-(defun mm-dissect-buffer (&optional no-strict-mime loose-mime)
+(defun mm-dissect-buffer (&optional no-strict-mime loose-mime from)
"Dissect the current buffer and return a list of MIME handles."
(save-excursion
- (let (ct ctl type subtype cte cd description id result from)
+ (let (ct ctl type subtype cte cd description id result)
(save-restriction
(mail-narrow-to-head)
(when (or no-strict-mime
@@ -523,8 +523,9 @@ Postpone undisplaying of viewers for typ
cte (mail-fetch-field "content-transfer-encoding")
cd (mail-fetch-field "content-disposition")
description (mail-fetch-field "content-description")
- from (mail-fetch-field "from")
id (mail-fetch-field "content-id"))
+ (unless from
+ (setq from (mail-fetch-field "from")))
;; FIXME: In some circumstances, this code is running within
;; an unibyte macro. mail-extract-address-components
;; creates unibyte buffers. This `if', though not a perfect
@@ -563,7 +564,7 @@ Postpone undisplaying of viewers for typ
'from from
'start start)
(car ctl))
- (cons (car ctl) (mm-dissect-multipart ctl))))
+ (cons (car ctl) (mm-dissect-multipart ctl from))))
(t
(mm-possibly-verify-or-decrypt
(mm-dissect-singlepart
@@ -588,7 +589,7 @@ Postpone undisplaying of viewers for typ
(mm-make-handle
(mm-copy-to-buffer) ctl cte nil cdl description nil id)))
-(defun mm-dissect-multipart (ctl)
+(defun mm-dissect-multipart (ctl from)
(goto-char (point-min))
(let* ((boundary (concat "\n--" (mail-content-type-get ctl 'boundary)))
(close-delimiter (concat (regexp-quote boundary) "--[ \t]*$"))
@@ -605,7 +606,7 @@ Postpone undisplaying of viewers for typ
(save-excursion
(save-restriction
(narrow-to-region start (point))
- (setq parts (nconc (list (mm-dissect-buffer t)) parts)))))
+ (setq parts (nconc (list (mm-dissect-buffer t nil from)) parts)))))
(end-of-line 2)
(or (looking-at boundary)
(forward-line 1))
@@ -614,7 +615,7 @@ Postpone undisplaying of viewers for typ
(save-excursion
(save-restriction
(narrow-to-region start end)
- (setq parts (nconc (list (mm-dissect-buffer t)) parts)))))
+ (setq parts (nconc (list (mm-dissect-buffer t nil from)) parts)))))
(mm-possibly-verify-or-decrypt (nreverse parts) ctl)))
(defun mm-copy-to-buffer ()
next reply other threads:[~2005-02-25 23:16 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-02-25 23:16 Arne Jørgensen [this message]
2005-02-25 23:24 ` Simon Josefsson
2005-02-27 17:11 ` Arne Jørgensen
2005-02-27 17:16 ` Arne Jørgensen
2005-02-27 18:05 ` Simon Josefsson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87r7j4xmb6.fsf@seamus.arnested.dk \
--to=arne@arnested.dk \
--cc=simon@josefsson.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).