diff options
author | Feng, YunhuaX </o=Intel/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=Feng, YunhuaX4e1> | 2018-03-01 10:16:07 +0800 |
---|---|---|
committer | Yonghong Zhu <yonghong.zhu@intel.com> | 2018-03-02 10:05:03 +0800 |
commit | 4faf13222edead307109bf8c747200ea3fb617c0 (patch) | |
tree | f2e42e6c2961f9d744f1c0a62952485ff3b155cf /BaseTools/Source/Python/Common/Misc.py | |
parent | 3db2823f1e270b191de701e5514968423b305530 (diff) | |
download | edk2-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.py | 30 |
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()
|