aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Ingebrigtsen2017-01-25 21:21:40 +0100
committerLars Ingebrigtsen2017-01-25 21:21:40 +0100
commit27accec97022a49b362feeb36293fdce2947eb43 (patch)
tree63eb43b64cfe7c3d30d062cb29561d1c37391b77
parente0e95199b93a232e5d4da67823364676ca9cb67c (diff)
downloademacs-27accec97022a49b362feeb36293fdce2947eb43.tar.gz
emacs-27accec97022a49b362feeb36293fdce2947eb43.zip
Make address parsing more robust
* lisp/mail/ietf-drums.el (ietf-drums-parse-address): Don't bug out on addresses like (ietf-drums-parse-address "\"Foo \"bar\" <larsi@gnus.org>") (bug#18572).
-rw-r--r--lisp/mail/ietf-drums.el11
1 files changed, 11 insertions, 0 deletions
diff --git a/lisp/mail/ietf-drums.el b/lisp/mail/ietf-drums.el
index a3e53cfe793..fd793a28309 100644
--- a/lisp/mail/ietf-drums.el
+++ b/lisp/mail/ietf-drums.el
@@ -192,6 +192,17 @@ the Content-Transfer-Encoding header of a mail."
192 (ietf-drums-init string) 192 (ietf-drums-init string)
193 (while (not (eobp)) 193 (while (not (eobp))
194 (setq c (char-after)) 194 (setq c (char-after))
195 ;; If we have an uneven number of quote characters,
196 ;; `forward-sexp' will fail. In these cases, just delete the
197 ;; final of these quote characters.
198 (when (and (eq c ?\")
199 (not
200 (save-excursion
201 (ignore-errors
202 (forward-sexp 1)
203 t))))
204 (delete-char 1)
205 (setq c (char-after)))
195 (cond 206 (cond
196 ((or (eq c ? ) 207 ((or (eq c ? )
197 (eq c ?\t)) 208 (eq c ?\t))