Patch for an Issue #1124

This commit is contained in:
Miroslav Stampar 2015-01-21 09:26:30 +01:00
parent cd743ab098
commit 02b3eb941f
2 changed files with 22 additions and 4 deletions

View File

@ -14,6 +14,7 @@ import hashlib
import httplib import httplib
import inspect import inspect
import json import json
import locale
import logging import logging
import ntpath import ntpath
import os import os
@ -1558,6 +1559,22 @@ def normalizePath(filepath):
return retVal return retVal
def safeExpandUser(filepath):
"""
Patch for a Python Issue18171 (http://bugs.python.org/issue18171)
"""
retVal = filepath
try:
retVal = os.path.expanduser(filepath)
except UnicodeDecodeError:
_ = locale.getdefaultlocale()
retVal = getUnicode(os.path.expanduser(filepath.encode(_[1] if _ and len(_) > 1 else UNICODE_ENCODING)))
print retVal
return retVal
def safeStringFormat(format_, params): def safeStringFormat(format_, params):
""" """
Avoids problems with inappropriate string format strings Avoids problems with inappropriate string format strings

View File

@ -52,6 +52,7 @@ from lib.core.common import readCachedFileContent
from lib.core.common import readInput from lib.core.common import readInput
from lib.core.common import resetCookieJar from lib.core.common import resetCookieJar
from lib.core.common import runningAsAdmin from lib.core.common import runningAsAdmin
from lib.core.common import safeExpandUser
from lib.core.common import sanitizeStr from lib.core.common import sanitizeStr
from lib.core.common import setOptimize from lib.core.common import setOptimize
from lib.core.common import setPaths from lib.core.common import setPaths
@ -496,7 +497,7 @@ def _setRequestFromFile():
addedTargetUrls = set() addedTargetUrls = set()
conf.requestFile = os.path.expanduser(conf.requestFile) conf.requestFile = safeExpandUser(conf.requestFile)
infoMsg = "parsing HTTP request from '%s'" % conf.requestFile infoMsg = "parsing HTTP request from '%s'" % conf.requestFile
logger.info(infoMsg) logger.info(infoMsg)
@ -619,7 +620,7 @@ def _setBulkMultipleTargets():
if not conf.bulkFile: if not conf.bulkFile:
return return
conf.bulkFile = os.path.expanduser(conf.bulkFile) conf.bulkFile = safeExpandUser(conf.bulkFile)
infoMsg = "parsing multiple targets list from '%s'" % conf.bulkFile infoMsg = "parsing multiple targets list from '%s'" % conf.bulkFile
logger.info(infoMsg) logger.info(infoMsg)
@ -1268,7 +1269,7 @@ def _setHTTPAuthentication():
debugMsg = "setting the HTTP(s) authentication PEM private key" debugMsg = "setting the HTTP(s) authentication PEM private key"
logger.debug(debugMsg) logger.debug(debugMsg)
_ = os.path.expanduser(conf.authPrivate) _ = safeExpandUser(conf.authPrivate)
checkFile(_) checkFile(_)
authHandler = HTTPSPKIAuthHandler(_) authHandler = HTTPSPKIAuthHandler(_)
@ -1475,7 +1476,7 @@ def _cleanupOptions():
for key, value in conf.items(): for key, value in conf.items():
if value and any(key.endswith(_) for _ in ("Path", "File")): if value and any(key.endswith(_) for _ in ("Path", "File")):
conf[key] = os.path.expanduser(value) conf[key] = safeExpandUser(value)
if conf.testParameter: if conf.testParameter:
conf.testParameter = urldecode(conf.testParameter) conf.testParameter = urldecode(conf.testParameter)