Subject: bug#6733: 23.2; tags-file-name is not a safe local variable

From: Tom Tromey <[email-masked]>
Date: Mon, 26 Jul 2010 09:30:25 -0600

I found that tags-file-name is not a safe local variable.
It seems like it should be, so I've attached a patch.

2010-07-26  Tom Tromey  <[email-masked]>

	* progmodes/etags.el (tags-file-name): Make safe if stringp.

=== modified file 'lisp/progmodes/etags.el'
--- lisp/progmodes/etags.el	2010-05-01 01:08:43 +0000
+++ lisp/progmodes/etags.el	2010-07-26 15:23:40 +0000
@@ -40,6 +40,7 @@
 Use the `etags' program to make a tags table file.")
 ;; Make M-x set-variable tags-file-name like M-x visit-tags-table.
 ;;;###autoload (put 'tags-file-name 'variable-interactive (purecopy "fVisit tags table: "))
+;;;###autoload (put 'tags-file-name 'safe-local-variable 'stringp)
 
 (defgroup etags nil "Tags tables."
   :group 'tools)

In GNU Emacs 23.2.1 (i386-redhat-linux-gnu, GTK+ Version 2.20.1)
 of 2010-05-13 on x86-01.phx2.fedoraproject.org
Windowing system distributor `Fedora Project', version 11.0.10802000
configured using `configure  '--build=i386-redhat-linux-gnu' '--host=i386-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=i386-redhat-linux-gnu' 'host_alias=i386-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''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  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: Change Log

Minor modes in effect:
  bug-reference-mode: t
  auto-fill-function: do-auto-fill
  shell-dirtrack-mode: t
  erc-list-mode: t
  erc-menu-mode: t
  erc-autojoin-mode: t
  erc-ring-mode: t
  erc-pcomplete-mode: t
  erc-track-mode: t
  erc-track-minor-mode: t
  erc-match-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-netsplit-mode: t
  erc-spelling-mode: t
  erc-truncate-mode: t
  diff-auto-refine-mode: t
  global-semanticdb-minor-mode: t
  global-semantic-idle-summary-mode: t
  semantic-mode: t
  flyspell-mode: t
  erc-status-mode: t
  erc-services-mode: t
  erc-networks-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
C-v C-l C-u C-n M-> C-x C-x C-x o M-\ C-x o C-v C-u 
C-n C-n M-w C-x o C-y C-x 1 C-x C-s M-v M-v C-z o <return> 
<return> C-z o C-x b * i <backspace> g r <tab> <return> 
C-c b C-x b j s . <tab> <return> M-x l g r e p <return> 
m o e <backspace> d e SPC C-a - C-e n i l SPC <return> 
<return> <return> C-x o C-x 1 C-z o M a y b e SPC g 
d b - s c r i p t - m o d e SPC a n d SPC l d - s c 
r i p t - m o d e SPC a l s o SPC t h <backspace> <backspace> 
n e e d s <backspace> SPC t h i s SPC t r e a t m e 
n t . <return> I w a <backspace> <backspace> SPC w 
a s SPC u n u s u <backspace> <backspace> <backspace> 
s u r e . <return> M-> M-v <switch-frame> <switch-frame> 
M-v M-v M-v M-v M-v C-u C-u C-p C-p C-p C-c C-a / t 
m p / Q <return> a p <tab> x - p <tab> <M-backspace> 
<M-backspace> <M-backspace> * p a t <tab> C-a C-k t 
e x t / x - <tab> p <tab> a <tab> <return> p r o g 
- m o d e SPC p a t c h <return> <return> C-c C-c y 
e s <return> C-z o C-x b Q <backspace> <return> C-x 
k <return> C-x C-g C-c b C-x k <return> C-SPC M-> C-w 
M-< C-SPC C-u C-n C-w C-x e e e C-SPC C-u C-n C-u C-n 
C-n C-w C-f C-x C-s C-z o C-x C-g M-x M-p M-p <ret
urn>

Recent messages:
Sending via mail...
Sending...done
Mark set [3 times]
Error Writing Table: #<semanticdb-table ctype.h>
Save Error: "\"Error in macro \\\"name\\\"\"": /home/tromey/.emacs.d/semanticdb/!usr!include!semantic.cache
Auto-saving...done
(Type e to repeat macro) [3 times]
Mark set
Saving file /tmp/P...
Wrote /tmp/P

Load-path shadows:
/home/tromey/lib/lisp/rpm-spec-mode hides /usr/share/emacs/site-lisp/rpm-spec-mode
/usr/share/emacs/site-lisp/flim/sha1 hides /usr/share/emacs/23.2/lisp/sha1
/usr/share/emacs/site-lisp/flim/md4 hides /usr/share/emacs/23.2/lisp/md4
/usr/share/emacs/site-lisp/flim/hex-util hides /usr/share/emacs/23.2/lisp/hex-util
/home/tromey/.emacs.d/elpa/css-mode-1.0/css-mode hides /usr/share/emacs/23.2/lisp/textmodes/css-mode
/home/tromey/.emacs.d/elpa/ruby-mode-1.0/ruby-mode hides /usr/share/emacs/23.2/lisp/progmodes/ruby-mode
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-glyph hides /usr/share/emacs/23.2/lisp/nxml/nxml-glyph
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-valid hides /usr/share/emacs/23.2/lisp/nxml/rng-valid
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-maint hides /usr/share/emacs/23.2/lisp/nxml/nxml-maint
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-cmpct hides /usr/share/emacs/23.2/lisp/nxml/rng-cmpct
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-loc hides /usr/share/emacs/23.2/lisp/nxml/rng-loc
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-dt hides /usr/share/emacs/23.2/lisp/nxml/rng-dt
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-parse hides /usr/share/emacs/23.2/lisp/nxml/rng-parse
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-uri hides /usr/share/emacs/23.2/lisp/nxml/rng-uri
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-util hides /usr/share/emacs/23.2/lisp/nxml/rng-util
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-uchnm hides /usr/share/emacs/23.2/lisp/nxml/nxml-uchnm
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-ns hides /usr/share/emacs/23.2/lisp/nxml/nxml-ns
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-rap hides /usr/share/emacs/23.2/lisp/nxml/nxml-rap
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/xsd-regexp hides /usr/share/emacs/23.2/lisp/nxml/xsd-regexp
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-mode hides /usr/share/emacs/23.2/lisp/nxml/nxml-mode
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-enc hides /usr/share/emacs/23.2/lisp/nxml/nxml-enc
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-outln hides /usr/share/emacs/23.2/lisp/nxml/nxml-outln
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-xsd hides /usr/share/emacs/23.2/lisp/nxml/rng-xsd
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-nxml hides /usr/share/emacs/23.2/lisp/nxml/rng-nxml
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-maint hides /usr/share/emacs/23.2/lisp/nxml/rng-maint
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/xmltok hides /usr/share/emacs/23.2/lisp/nxml/xmltok
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-util hides /usr/share/emacs/23.2/lisp/nxml/nxml-util
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/nxml-parse hides /usr/share/emacs/23.2/lisp/nxml/nxml-parse
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-pttrn hides /usr/share/emacs/23.2/lisp/nxml/rng-pttrn
/home/tromey/.emacs.d/elpa/nxml-mode-20041004/rng-match hides /usr/share/emacs/23.2/lisp/nxml/rng-match
/usr/share/emacs/site-lisp/flim/sasl-cram hides /usr/share/emacs/23.2/lisp/net/sasl-cram
/usr/share/emacs/site-lisp/flim/hmac-def hides /usr/share/emacs/23.2/lisp/net/hmac-def
/usr/share/emacs/site-lisp/flim/hmac-md5 hides /usr/share/emacs/23.2/lisp/net/hmac-md5
/usr/share/emacs/site-lisp/flim/sasl hides /usr/share/emacs/23.2/lisp/net/sasl
/usr/share/emacs/site-lisp/flim/sasl-digest hides /usr/share/emacs/23.2/lisp/net/sasl-digest
/usr/share/emacs/site-lisp/flim/sasl-ntlm hides /usr/share/emacs/23.2/lisp/net/sasl-ntlm
/usr/share/emacs/site-lisp/flim/ntlm hides /usr/share/emacs/23.2/lisp/net/ntlm
/home/tromey/.emacs.d/elpa/emms-3.0/tq hides /usr/share/emacs/23.2/lisp/emacs-lisp/tq

Features:
(log-edit pcvs-util url-cache url-http tls url-gw url-auth iso-transl
expand diff dired-aux skeleton cal-move sh-script executable vcard
gnus-fun jimb-patch smerge-mode gdb-shell rect noutline outline
mule-util gdb-ui bindat json gud vc-annotate grep webjump ffap
newcomment etags bbdb-sc supercite regi tcl semantic/analyze/complete
shell edmacro kmacro semantic/edit goto-addr add-log shadow mail-hist
emacsbug idutils compile find-file semantic/complete eieio-opt
bbdb-hooks semantic/tag-write erc-menu erc-join erc-ring erc-pcomplete
pcomplete erc-track erc-match erc-button erc-fill erc-stamp erc-netsplit
erc-spelling erc-truncate semantic/tag-file diff-mode
semantic/db-typecache semantic/find semantic/bovine semantic/db-file
cedet-files semantic/bovine/c semantic/decorate/include semantic/db-find
semantic/db-ref semantic/decorate/mode semantic/decorate pulse
semantic/bovine/c-by semantic/lex-spp semantic/bovine/gcc semantic/dep
semantic/analyze semantic/sort semantic/scope semantic/analyze/fcn
cc-mode cc-fonts cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars
cc-defs w3m-form w3m browse-url doc-view image-mode w3m-hist w3m-fb
w3m-ems w3m-ccl ccl w3m-favicon w3m-image w3m-proc w3m-util vc-git
vc-bzr vc-sccs vc-svn vc-rcs vc-dir ewoc vc vc-dispatcher flow-fill
bbdb-gui gnus-cite smiley ansi-color gnus-async gnus-bcklg parse-time
gnus-ml disp-table auth-source nnml nndraft nnmh bbdb-gnus bbdb-snarf
mail-extr bbdb-com warnings gnus-agent gnus-srvr gnus-score score-mode
nnvirtual gnus-msg gnus-art mm-uu mml2015 epg-config mm-view smime dig
nntp gnus-cache gnus-sum nnoo gnus-group gnus-undo nnmail mail-source
gnus-start gnus-spec gnus-int gnus-range message idna sendmail ecomplete
rfc822 mml mml-sec password-cache mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 qp ietf-drums mailabbrev gmm-utils
mailheader canlock sha1 sha1-el hex-util hashcash gnus-win gnus gnus-ems
nnheader gnus-util netrc mail-utils wid-edit multi-isearch apropos
cus-start cus-load semantic/db-mode semantic/db eieio-base semantic/idle
semantic/format ezimage semantic/tag-ls semantic/ctxt
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw eieio byte-opt bytecomp byte-compile mode-local cedet
copyright dabbrev find-func help-mode view vc-cvs jka-compr flyspell
ispell eldoc emms-status emms-lastfm emms-url url url-proxy url-privacy
url-expand url-methods url-history url-cookie url-util url-parse
url-vars mm-util mail-prsvr mailcap emms-browser sort emms-playlist-sort
emms-score emms-player-xine emms-player-mpd tq emms-playing-time
emms-lyrics time-date emms-streams emms-mode-line emms-cache
emms-info-ogginfo emms-info-mp3info emms-info later-do
emms-playlist-mode emms-player-mplayer emms-player-simple
emms-source-playlist emms-source-file dired emms-setup emms emms-compat
gdb-shell-autoloads nxml-enc info weblogger-autoloads xml-rpc-autoloads
package reporter cal-china lunar solar cal-dst cal-bahai cal-islam
cal-hebrew holidays hol-loaddefs appt diary-lib diary-loaddefs cal-menu
easymenu calendar cal-loaddefs uniquify mouse-sel easy-mmode status cl
cl-19 erc-services erc-networks erc-goodies erc erc-backend erc-compat
format-spec thingatpt pp bbdb timezone ange-ftp regexp-opt comint ring
server advice help-fns advice-preload u-vm-color vm-autoloads vm-vars
vm-version bbdb-autoloads 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)

Tom