summaryrefslogtreecommitdiffstats
path: root/BaseTools/Source/Python/Common/Misc.py
diff options
context:
space:
mode:
authorFeng, YunhuaX </o=Intel/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=Feng, YunhuaX4e1>2018-03-01 10:16:07 +0800
committerYonghong Zhu <yonghong.zhu@intel.com>2018-03-02 10:05:03 +0800
commit4faf13222edead307109bf8c747200ea3fb617c0 (patch)
treef2e42e6c2961f9d744f1c0a62952485ff3b155cf /BaseTools/Source/Python/Common/Misc.py
parent3db2823f1e270b191de701e5514968423b305530 (diff)
downloadedk2-4faf13222edead307109bf8c747200ea3fb617c0.tar.gz
edk2-4faf13222edead307109bf8c747200ea3fb617c0.tar.bz2
edk2-4faf13222edead307109bf8c747200ea3fb617c0.zip
BaseTools: Fix eval parse string issue
eval argument start with " or ', but it is unicode string, will encounter error: List = list(eval(Value)) # translate escape character File "<string>", line 1 'j??=????????F?? ^ SyntaxError: EOL while scanning string literal Cc: Liming Gao <liming.gao@intel.com> Cc: Yonghong Zhu <yonghong.zhu@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Yunhua Feng <yunhuax.feng@intel.com> Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
Diffstat (limited to 'BaseTools/Source/Python/Common/Misc.py')
-rw-r--r--BaseTools/Source/Python/Common/Misc.py30
1 files changed, 26 insertions, 4 deletions
diff --git a/BaseTools/Source/Python/Common/Misc.py b/BaseTools/Source/Python/Common/Misc.py
index a7e7797d04..af374d804d 100644
--- a/BaseTools/Source/Python/Common/Misc.py
+++ b/BaseTools/Source/Python/Common/Misc.py
@@ -1554,7 +1554,13 @@ def ParseFieldValue (Value):
return Value, 16
if Value.startswith('L"') and Value.endswith('"'):
# Unicode String
- List = list(eval(Value[1:])) # translate escape character
+ # translate escape character
+ Value = Value[1:]
+ try:
+ Value = eval(Value)
+ except:
+ Value = Value[1:-1]
+ List = list(Value)
List.reverse()
Value = 0
for Char in List:
@@ -1562,7 +1568,12 @@ def ParseFieldValue (Value):
return Value, (len(List) + 1) * 2
if Value.startswith('"') and Value.endswith('"'):
# ASCII String
- List = list(eval(Value)) # translate escape character
+ # translate escape character
+ try:
+ Value = eval(Value)
+ except:
+ Value = Value[1:-1]
+ List = list(Value)
List.reverse()
Value = 0
for Char in List:
@@ -1570,7 +1581,13 @@ def ParseFieldValue (Value):
return Value, len(List) + 1
if Value.startswith("L'") and Value.endswith("'"):
# Unicode Character Constant
- List = list(eval(Value[1:])) # translate escape character
+ # translate escape character
+ Value = Value[1:]
+ try:
+ Value = eval(Value)
+ except:
+ Value = Value[1:-1]
+ List = list(Value)
if len(List) == 0:
raise BadExpression('Length %s is %s' % (Value, len(List)))
List.reverse()
@@ -1580,7 +1597,12 @@ def ParseFieldValue (Value):
return Value, len(List) * 2
if Value.startswith("'") and Value.endswith("'"):
# Character constant
- List = list(eval(Value)) # translate escape character
+ # translate escape character
+ try:
+ Value = eval(Value)
+ except:
+ Value = Value[1:-1]
+ List = list(Value)
if len(List) == 0:
raise BadExpression('Length %s is %s' % (Value, len(List)))
List.reverse()