# HG changeset patch # User Mads Kiilerich # Date 1365684082 -7200 # Node ID b52404a914a9c68b621fdba9b747b4a52d62b552 # Parent 3a72c89a83ece2490295d3dbf28c35dd76b7b2fd scheme: don't crash on invalid URLs diff -r 3a72c89a83ec -r b52404a914a9 hgext/schemes.py --- a/hgext/schemes.py Fri Feb 08 21:08:34 2013 +0000 +++ b/hgext/schemes.py Thu Apr 11 14:41:22 2013 +0200 @@ -62,7 +62,10 @@ def instance(self, ui, url, create): # Should this use the util.url class, or is manual parsing better? - url = url.split('://', 1)[1] + try: + url = url.split('://', 1)[1] + except IndexError: + raise util.Abort(_("no '://' in scheme url '%s'") % url) parts = url.split('/', self.parts) if len(parts) > self.parts: tail = parts[-1] diff -r 3a72c89a83ec -r b52404a914a9 tests/test-schemes.t --- a/tests/test-schemes.t Fri Feb 08 21:08:34 2013 +0000 +++ b/tests/test-schemes.t Thu Apr 11 14:41:22 2013 +0200 @@ -14,6 +14,15 @@ $ echo a > a $ hg ci -Am initial adding a + +invalid scheme + + $ hg log -R z:z + abort: no '://' in scheme url 'z:z' + [255] + +http scheme + $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log $ cat hg.pid >> $DAEMON_PIDS $ hg incoming l://