E1573 channel.txt /*E1573*
E1574 channel.txt /*E1574*
E1575 builtin.txt /*E1575*
+E1576 tagsrch.txt /*E1576*
E158 sign.txt /*E158*
E159 sign.txt /*E159*
E16 cmdline.txt /*E16*
have an absolute or relative path. It may contain environment
variables and wildcards (although the use of wildcards is
doubtful). It cannot contain a <Tab>.
+ *E1576*
+ Using a remote file via network protocol (e.g. using
+ http://remote/file.txt) is not allowed.
{tagaddress} The Ex command that positions the cursor on the tag. It can
be any Ex command, although restrictions apply (see
|tag-security|). Posix only allows line numbers and search
EXTERN char e_cannot_create_pipes[]
INIT(= N_("E1575: Cannot create pipes"));
#endif
+EXTERN char e_tag_file_entry_must_not_be_url[]
+ INIT(= N_("E1576: Tag file entry must not be a URL"));
msgstr ""
"Project-Id-Version: Vim\n"
"Report-Msgid-Bugs-To: vim-dev@vim.org\n"
-"POT-Creation-Date: 2026-04-21 19:33+0000\n"
+"POT-Creation-Date: 2026-04-27 18:39+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgid "E1575: Cannot create pipes"
msgstr ""
+msgid "E1576: Tag file entry must not be a URL"
+msgstr ""
+
#. type of cmdline window or 0
#. result of cmdline window or 0
#. buffer of cmdline window or NULL
char_u *expanded_fname = NULL;
expand_T xpc;
+ // Refuse to follow URLs from tag files. Tag entries are expected
+ // to reference local source files; a URL would otherwise be passed
+ // to netrw and trigger a network request.
+ if (path_with_url(fname))
+ {
+ emsg(_(e_tag_file_entry_must_not_be_url));
+ return NULL;
+ }
+
/*
* Expand file name (for environment variables) when needed.
* Disallow backticks, they could execute arbitrary shell
bwipe!
endfunc
+func Test_tagjump_refuse_url()
+ call writefile([
+ \ "XTagURL\thttp://127.0.0.1:1/$XTAG_SECRET/file.c\t/^int main"
+ \ ], 'Xtags', 'D')
+ let save_tags = &tags
+ set tags=Xtags
+
+ call assert_fails('tag XTagURL', 'E1576:')
+ let &tags = save_tags
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 405,
/**/
404,
/**/