Mercurial > kallithea
diff kallithea/lib/middleware/simplegit.py @ 5616:890189aa2bfe stable
middleware: decode the repo_name received from http header to unicode
The middlewares seemed to make the incorrect assumption that the headers
contained unicode. Or to put it differently: They relied on the Python default
encoding to be able to convert to unicode instead of using safe_unicode. It
would thus fail if running with LANG=C.
Instead, utilize that the header actually contains str_repo_name and explicitly
decode that to unicode.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Tue, 05 Jan 2016 16:24:23 +0100 |
parents | d9386a3924db |
children | 82ed7ad0dc48 a5eb9d593735 |
line wrap: on
line diff
--- a/kallithea/lib/middleware/simplegit.py Tue Jan 05 16:23:22 2016 +0100 +++ b/kallithea/lib/middleware/simplegit.py Tue Jan 05 16:24:23 2016 +0100 @@ -38,7 +38,7 @@ HTTPNotAcceptable from kallithea.model.db import User, Ui -from kallithea.lib.utils2 import safe_str, fix_PATH, get_server_url,\ +from kallithea.lib.utils2 import safe_str, safe_unicode, fix_PATH, get_server_url,\ _set_extras from kallithea.lib.base import BaseVCSController, WSGIResultCloseCallback from kallithea.lib.utils import make_ui, is_valid_repo @@ -79,9 +79,11 @@ # EXTRACT REPOSITORY NAME FROM ENV #====================================================================== try: - repo_name = self.__get_repository(environ) + str_repo_name = self.__get_repository(environ) + repo_name = safe_unicode(str_repo_name) log.debug('Extracted repo name is %s', repo_name) - except Exception: + except Exception as e: + log.error('error extracting repo_name: %r', e) return HTTPInternalServerError()(environ, start_response) # quick check if that dir exists... @@ -176,7 +178,6 @@ #=================================================================== # GIT REQUEST HANDLING #=================================================================== - str_repo_name = safe_str(repo_name) repo_path = os.path.join(safe_str(self.basepath),str_repo_name) log.debug('Repository path is %s', repo_path)