comparison mercurial/util.py @ 33657:60ee7af2a2ba stable

subrepo: add tests for svn rogue ssh urls (SEC) 'ssh://' has an exploit that will pass the url blindly to the ssh command, allowing a malicious person to have a subrepo with '-oProxyCommand' which could run arbitrary code on a user's machine. In addition, at least on Windows, a pipe '|' is able to execute arbitrary commands. When this happens, let's throw a big abort into the user's face so that they can inspect what's going on.
author Sean Farley <sean@farley.io>
date Mon, 31 Jul 2017 16:44:17 -0700
parents 0b3fe3910ef5
children 3fee7f7d2da0
comparison
equal deleted inserted replaced
33656:475af2f89636 33657:60ee7af2a2ba
2903 user. 2903 user.
2904 2904
2905 Raises an error.Abort when the url is unsafe. 2905 Raises an error.Abort when the url is unsafe.
2906 """ 2906 """
2907 path = urlreq.unquote(path) 2907 path = urlreq.unquote(path)
2908 if path.startswith('ssh://-') or '|' in path: 2908 if (path.startswith('ssh://-') or path.startswith('svn+ssh://-')
2909 or '|' in path):
2909 raise error.Abort(_('potentially unsafe url: %r') % 2910 raise error.Abort(_('potentially unsafe url: %r') %
2910 (path,)) 2911 (path,))
2911 2912
2912 def hidepassword(u): 2913 def hidepassword(u):
2913 '''hide user credential in a url string''' 2914 '''hide user credential in a url string'''