runtime(netrw): upstream snapshot of v179 Commit: https://github.com/vim/vim/commit/29d596c80ab08a1f966a16912788576a14c217ad Author: Luca Saccarola <github.e4...@aleeas.com> Date: Tue Mar 4 20:36:31 2025 +0100
runtime(netrw): upstream snapshot of v179 closes: https://github.com/vim/vim/issues/16787 Signed-off-by: Luca Saccarola <github.e4...@aleeas.com> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/runtime/pack/dist/opt/netrw/autoload/netrw.vim b/runtime/pack/dist/opt/netrw/autoload/netrw.vim index d2b7d4187..feee23dff 100644 --- a/runtime/pack/dist/opt/netrw/autoload/netrw.vim +++ b/runtime/pack/dist/opt/netrw/autoload/netrw.vim @@ -19,7 +19,7 @@ if &cp || exists("g:loaded_netrw") finish endif -let g:loaded_netrw = "v178" +let g:loaded_netrw = "v179" if !has("patch-9.1.1054") && !has('nvim') echoerr 'netrw needs Vim v9.1.1054' @@ -44,7 +44,7 @@ setl cpo&vim " Usage: netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,"some message",error-number) " netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,["message1","message2",...],error-number) " (this function can optionally take a list of messages) -" Dec 2, 2019 : max errnum currently is 106 +" Mar 03, 2025 : max errnum currently is 107 function! netrw#ErrorMsg(level, msg, errnum) if a:level < g:netrw_errorlvl return @@ -1249,6 +1249,10 @@ fun! netrw#Obtain(islocal,fname,...) call s:SetupNetrwStatusLine('%f %h%m%r%=%9*Obtaining '.a:fname) endif call s:NetrwMethod(b:netrw_curdir) + if !s:NetrwValidateHostname(g:netrw_machine) + call netrw#ErrorMsg(s:ERROR,"Rejecting invalid hostname: <" .. g:netrw_machine .. ">",107) + return + endif if b:netrw_method == 4 " obtain file using scp @@ -1911,6 +1915,10 @@ fun! netrw#NetRead(mode,...) " call Dret("netrw#NetRead : unsupported method") return endif + if !s:NetrwValidateHostname(g:netrw_machine) + call netrw#ErrorMsg(s:ERROR,"Rejecting invalid hostname: <" .. g:netrw_machine .. ">",107) + return + endif let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix " Check whether or not NetrwBrowse() should be handling this request @@ -2333,6 +2341,10 @@ fun! netrw#NetWrite(...) range " call Dfunc("netrw#NetWrite : unsupported method") return endif + if !s:NetrwValidateHostname(g:netrw_machine) + call netrw#ErrorMsg(s:ERROR,"Rejecting invalid hostname: <" .. g:netrw_machine .. ">",107) + return + endif " ============= " NetWrite: Perform Protocol-Based Write {{{3 @@ -3086,6 +3098,17 @@ fun! s:NetrwMethod(choice) " call Dret("s:NetrwMethod : b:netrw_method=".b:netrw_method." g:netrw_port=".g:netrw_port) endfun +" s:NetrwValidateHostname: Validate that the hostname is valid {{{2 +" Input: +" hostname +" Output: +" true if g:netrw_machine is valid according to RFC1123 #Section 2 +fun! s:NetrwValidateHostname(hostname) + " RFC1123#section-2 mandates, a valid hostname starts with letters or digits + " so reject everyhing else + return a:hostname =~? '^[a-z0-9]' +endfun + " --------------------------------------------------------------------- " NetUserPass: set username and password for subsequent ftp transfer {{{2 " Usage: :call NetUserPass() -- will prompt for userid and password @@ -7825,6 +7848,10 @@ fun! s:NetrwUpload(fname,tgt,...) elseif a:tgt =~ '^ftp:' call s:NetrwMethod(a:tgt) + if !s:NetrwValidateHostname(g:netrw_machine) + call netrw#ErrorMsg(s:ERROR,"Rejecting invalid hostname: <" .. g:netrw_machine .. ">",107) + return + endif if b:netrw_method == 2 " handle uploading a list of files via ftp+.netrc @@ -10292,6 +10319,18 @@ fun! netrw#Call(funcname,...) return call("s:".a:funcname,a:000) endfun +" --------------------------------------------------------------------- +" netrw#LogLevel: returns the specified loglevel +fun! netrw#LogLevel(level) + if a:level == 'WARNING' + return s:WARNING + elseif a:level == 'NOTE' + return s:NOTE + elseif a:level == 'ERROR' + return s:ERROR + endif +endfun + " --------------------------------------------------------------------- " netrw#Expose: allows UserMaps and pchk to look at otherwise script-local variables {{{2 " I expect this function to be used in @@ -10383,26 +10422,6 @@ fun! netrw#UserMaps(islocal) " call Dret("netrw#UserMaps") endfun -" --------------------------------------------------------------------- -" netrw#WinPath: tries to insure that the path is windows-acceptable, whether cygwin is used or not {{{2 -fun! netrw#WinPath(path) - " call Dfunc("netrw#WinPath(path<".a:path.">)") - if (!g:netrw_cygwin || &shell !~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$') && has("win32") - " remove cygdrive prefix, if present - let path = substitute(a:path,g:netrw_cygdrive.'/\(.\)',' :','') - " remove trailing slash (Win95) - let path = substitute(path, '\(\\|/\)$', '', 'g') - " remove escaped spaces - let path = substitute(path, '\ ', ' ', 'g') - " convert slashes to backslashes - let path = substitute(path, '/', '\', 'g') - else - let path= a:path - endif - " call Dret("netrw#WinPath <".path.">") - return path -endfun - " --------------------------------------------------------------------- " s:NetrwBadd: adds marked files to buffer list or vice versa {{{2 " cb : bl2mf=0 add marked files to buffer list diff --git a/runtime/pack/dist/opt/netrw/autoload/netrw/os.vim b/runtime/pack/dist/opt/netrw/autoload/netrw/os.vim index 6095d0d8d..1ab1bd038 100644 --- a/runtime/pack/dist/opt/netrw/autoload/netrw/os.vim +++ b/runtime/pack/dist/opt/netrw/autoload/netrw/os.vim @@ -19,7 +19,7 @@ function! netrw#os#Execute(cmd) endif if v:shell_error - call netrw#ErrorMsg(s:WARNING, "shell signalled an error", 106) + call netrw#ErrorMsg(netrw#LogLevel('ERROR'), "shell signalled an error", 106) endif endfunction diff --git a/runtime/pack/dist/opt/netrw/autoload/netrwSettings.vim b/runtime/pack/dist/opt/netrw/autoload/netrwSettings.vim index 69294db72..c32051ca7 100644 --- a/runtime/pack/dist/opt/netrw/autoload/netrwSettings.vim +++ b/runtime/pack/dist/opt/netrw/autoload/netrwSettings.vim @@ -15,7 +15,7 @@ if &cp || exists("g:loaded_netrwSettings") finish endif -let g:loaded_netrwSettings = "v178" +let g:loaded_netrwSettings = "v179" " NetrwSettings: {{{ diff --git a/runtime/pack/dist/opt/netrw/plugin/netrwPlugin.vim b/runtime/pack/dist/opt/netrw/plugin/netrwPlugin.vim index 7a9e02aa4..aed36a0cc 100644 --- a/runtime/pack/dist/opt/netrw/plugin/netrwPlugin.vim +++ b/runtime/pack/dist/opt/netrw/plugin/netrwPlugin.vim @@ -15,7 +15,7 @@ if &cp || exists("g:loaded_netrwPlugin") finish endif -let g:loaded_netrwPlugin = "v178" +let g:loaded_netrwPlugin = "v179" let s:keepcpo = &cpo set cpo&vim -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1tpYCU-008fA8-Lw%40256bit.org.