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