diff -r 2ac08d8b21aa -r 67bfe7f64e57 contrib/hg-ssh --- a/contrib/hg-ssh Tue May 22 14:37:20 2012 -0500 +++ b/contrib/hg-ssh Mon May 21 16:19:30 2012 -0700 @@ -33,25 +33,31 @@ import sys, os, shlex -cwd = os.getcwd() -allowed_paths = [os.path.normpath(os.path.join(cwd, os.path.expanduser(path))) - for path in sys.argv[1:]] -orig_cmd = os.getenv('SSH_ORIGINAL_COMMAND', '?') -try: - cmdargv = shlex.split(orig_cmd) -except ValueError, e: - sys.stderr.write('Illegal command "%s": %s\n' % (orig_cmd, e)) - sys.exit(255) +def main(): + cwd = os.getcwd() + allowed_paths = [os.path.normpath(os.path.join(cwd, + os.path.expanduser(path))) + for path in sys.argv[1:]] + orig_cmd = os.getenv('SSH_ORIGINAL_COMMAND', '?') + try: + cmdargv = shlex.split(orig_cmd) + except ValueError, e: + sys.stderr.write('Illegal command "%s": %s\n' % (orig_cmd, e)) + sys.exit(255) -if cmdargv[:2] == ['hg', '-R'] and cmdargv[3:] == ['serve', '--stdio']: - path = cmdargv[2] - repo = os.path.normpath(os.path.join(cwd, os.path.expanduser(path))) - if repo in allowed_paths: - dispatch.dispatch(dispatch.request(['-R', repo, 'serve', '--stdio'])) + if cmdargv[:2] == ['hg', '-R'] and cmdargv[3:] == ['serve', '--stdio']: + path = cmdargv[2] + repo = os.path.normpath(os.path.join(cwd, os.path.expanduser(path))) + if repo in allowed_paths: + dispatch.dispatch(dispatch.request(['-R', repo, + 'serve', + '--stdio'])) + else: + sys.stderr.write('Illegal repository "%s"\n' % repo) + sys.exit(255) else: - sys.stderr.write('Illegal repository "%s"\n' % repo) + sys.stderr.write('Illegal command "%s"\n' % orig_cmd) sys.exit(255) -else: - sys.stderr.write('Illegal command "%s"\n' % orig_cmd) - sys.exit(255) +if __name__ == '__main__': + main()