GNU bug report logs - #54015
29.0.50; Cancel error when article has no email in From

Previous Next

Packages: gnus, emacs;

Reported by: Adam Sjøgren <asjo <at> koldfront.dk>

Date: Tue, 15 Feb 2022 20:11:02 UTC

Severity: normal

Found in version 29.0.50

To reply to this bug, email your comments to 54015 AT debbugs.gnu.org.

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, bugs <at> gnus.org:
bug#54015; Package emacs,gnus. (Tue, 15 Feb 2022 20:11:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Adam Sjøgren <asjo <at> koldfront.dk>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org, bugs <at> gnus.org. (Tue, 15 Feb 2022 20:11:02 GMT) Full text and rfc822 format available.

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

From: Adam Sjøgren <asjo <at> koldfront.dk>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.0.50; Cancel error when article has no email in From
Date: Tue, 15 Feb 2022 21:09:51 +0100
I pressed C in a summary buffer to cancel an article, and got this
error:

  Debugger entered--Lisp error: (wrong-type-argument char-or-string-p nil)
    message-is-yours-p()
    message-cancel-news()
    gnus-summary-cancel-article(nil nil)
    funcall-interactively(gnus-summary-cancel-article nil nil)
    command-execute(gnus-summary-cancel-article)

The problem is that message-is-yours-p assumes that the From: line
contains an email-address, but in this case it only has a name:

	   ;; Email address in From field equals to our address
	   (and (setq from (message-fetch-field "from"))
		(string-equal
		 (downcase (car (mail-header-parse-address from)))
		 (downcase (car (mail-header-parse-address
				 (message-make-from))))))

The (mail-header-parse-address from) is nil when there is no email:

  (mail-header-parse-address "Andi Duferense") → nil

so the (downcase nil) fails with (wrong-type-argument char-or-string-p
nil).

This fixes the problem for me:

diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 869ab3f82b..faf22ea85f 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -7485,7 +7485,7 @@ message-is-yours-p
 	   ;; Email address in From field equals to our address
 	   (and (setq from (message-fetch-field "from"))
 		(string-equal
-		 (downcase (car (mail-header-parse-address from)))
+		 (downcase (or (car (mail-header-parse-address from)) ""))
 		 (downcase (car (mail-header-parse-address
 				 (message-make-from))))))
 	   ;; Email address in From field matches

There is probably a better way to fix it.



In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.24, cairo version 1.16.0)
 of 2022-02-14 built on tullinup
Repository revision: 0c53f0db3b7d1a01076cd51dbccd41ec547716d8
Repository branch: master
System Description: Debian GNU/Linux 11 (bullseye)

Configured using:
 'configure --with-pgtk --with-native-compilation'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP
NOTIFY INOTIFY PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS WEBP XIM GTK3 ZLIB

Important settings:
  value of $LANG: en_GB.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Group

Minor modes in effect:
  gnus-topic-mode: t
  gnus-undo-mode: t
  global-magit-file-mode: t
  magit-auto-revert-mode: t
  global-git-commit-mode: t
  dumb-jump-mode: t
  shell-dirtrack-mode: t
  which-function-mode: t
  global-auto-complete-mode: t
  save-place-mode: t
  jabber-activity-mode: t
  winner-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  line-number-mode: t

Load-path shadows:
~/elisp/let-alist/let-alist hides ~/elisp/extra/let-alist
/usr/share/emacs/site-lisp/elpa-src/boxquote-2.2/boxquote hides ~/elisp/extra/boxquote
~/elisp/transient/transient hides /usr/src/emacs/lisp/transient
~/elisp/let-alist/let-alist hides /usr/src/emacs/lisp/emacs-lisp/let-alist

Features:
(shadow emacsbug cl-print debug backtrace find-func bbdb-message
sendmail url-http url-gw url-auth gnus-gravatar gravatar sort smiley
gnus-cite gnus-async gnus-bcklg gnus-dup gnus-ml disp-table cus-start
gnus-topic utf-7 imap rfc2104 epa-file network-stream nsm nnml bbdb-gnus
bbdb-mua nnnil gnus-demon gnus-twit gnus-delay gnus-draft gnus-agent
gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache nndraft nnmh
mail-extr spam spam-stat bbdb-com gnus-uu yenc gnus-msg gnus-html
url-queue help-fns radix-tree url-cache mm-url bbdb-picture gnus-art
mm-uu mml2015 mm-view mml-smime smime dig gnus-sum gnus-group gnus-undo
gnus-fun hashcash gnus-start gnus-dbus gnus-cloud nnimap nnmail
mail-source utf7 netrc nnoo gnus-spec gnus-int gnus-range gnus-win gnus
nnheader range face-remap time gopher shr pixel-fill kinsoku svg litable
magithub magithub-ci magithub-issue magithub-cache magithub-core
magit-submodule magit-obsolete magit-popup magit-blame magit-stash
magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone
magit-remote magit-commit magit-sequence magit-notes magit-worktree
magit-tag magit-merge magit-branch magit-reset magit-files magit-refs
magit-status magit magit-repos magit-apply magit-wip magit-log
magit-diff smerge-mode diff magit-core magit-autorevert autorevert
filenotify magit-margin magit-transient magit-process magit-mode
git-commit recentf tree-widget magit-git magit-section benchmark
magit-utils vc-git diff-mode ido crm log-edit message yank-media rmc
rfc822 mml mml-sec epa epg rfc6068 epg-config gnus-util mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader
pcvs-util with-editor markdown-mode color noutline outline rg pcase
rg-info-hack rg-menu transient rg-ibuffer ibuf-macs rg-result wgrep-rg
rg-history rg-header ibuf-ext ibuffer ibuffer-loaddefs wgrep grep
compile text-property-search dumb-jump f dash s etags fileloop generator
xref project tramp tramp-loaddefs trampver tramp-integration cus-edit pp
cus-load files-x tramp-compat shell pcomplete parse-time iso8601 ls-lisp
auto-loads tex-site expand-region subword-mode-expansions
cperl-mode-expansions text-mode-expansions html-mode-expansions
er-basic-expansions thingatpt expand-region-core expand-region-custom
which-func cperl-mode auto-complete-config auto-complete edmacro kmacro
popup debian-changelog-mode imenu add-log dpkg-dev-el saveplace vc
vc-dispatcher bbdb bbdb-site timezone bbdb-loaddefs boxquote rect
jabber-last-message-correction jabber-http-file-upload jabber-print-html
jabber-otr jabber jabber-notifications notifications jabber-libnotify
dbus jabber-awesome jabber-osd jabber-wmii jabber-xmessage
jabber-festival jabber-sawfish jabber-ratpoison jabber-tmux
jabber-screen jabber-socks5 jabber-ft-server jabber-si-server
jabber-ft-client jabber-ft-common jabber-si-client jabber-si-common
jabber-feature-neg jabber-truncate jabber-time jabber-autoaway time-date
jabber-vcard-avatars jabber-chatstates jabber-events jabber-vcard
jabber-avatar jabber-activity jabber-watch jabber-modeline easy-mmode
advice jabber-ahc-presence jabber-ahc jabber-version jabber-ourversion
jabber-muc-nick-completion hippie-exp comint ansi-color jabber-browse
jabber-search jabber-register jabber-roster format-spec jabber-presence
jabber-muc jabber-bookmarks jabber-private jabber-muc-nick-coloring
hexrgb jabber-widget jabber-disco wid-edit jabber-chat jabber-history
jabber-chatbuffer jabber-alert jabber-iq jabber-core jabber-console
derived sgml-mode facemenu dom ewoc jabber-keymap jabber-sasl sasl
sasl-anonymous sasl-login sasl-plain fsm jabber-logon jabber-conn srv
dns starttls tls jabber-xml xml jabber-menu jabber-util cl winner ring
gnutls puny comp comp-cstr warnings rx cl-extra help-mode
find-file-from-selection find-lisp dired dired-loaddefs cap-words
superword subword server finder-inf package browse-url url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
url-util mailcap url-handlers url-parse auth-source cl-seq eieio
eieio-core cl-macs eieio-loaddefs password-cache json map url-vars seq
gv subr-x byte-opt bytecomp byte-compile cconv cl-loaddefs cl-lib
iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/pgtk-win pgtk-win term/common-win
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer cl-generic
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice button loaddefs faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget keymap hashtable-print-readable backquote threads
dbusbind inotify dynamic-setting system-font-setting font-render-setting
cairo gtk pgtk lcms2 multi-tty make-network-process native-compile
emacs)

Memory information:
((conses 16 856378 61025)
 (symbols 48 38150 20)
 (strings 32 231006 15196)
 (string-bytes 1 9980301)
 (vectors 16 53919)
 (vector-slots 8 1672621 192833)
 (floats 8 522 138)
 (intervals 56 734 0)
 (buffers 992 27))

-- 
 "Yes, this sled is truly a hazard to life and limb."       Adam Sjøgren
 "WHEEEE! OOMPH! EEEEEEE!"                             asjo <at> koldfront.dk




This bug report was last modified 2 years and 71 days ago.

Previous Next


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