Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 31d250f

Browse files
committed
Fixes #1592
1 parent 1c5c937 commit 31d250f

1 file changed

Lines changed: 16 additions & 2 deletions

File tree

lib/core/convert.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import base64
99
import json
1010
import pickle
11+
import StringIO
1112
import sys
1213

1314
from lib.core.settings import IS_WIN
@@ -67,10 +68,23 @@ def base64unpickle(value):
6768

6869
retVal = None
6970

71+
def _(self):
72+
if len(self.stack) > 1:
73+
func = self.stack[-2]
74+
if '.' in repr(func) and " 'lib." not in repr(func):
75+
raise Exception, "abusing reduce() is bad, Mkay!"
76+
self.load_reduce()
77+
78+
def loads(str):
79+
file = StringIO.StringIO(str)
80+
unpickler = pickle.Unpickler(file)
81+
unpickler.dispatch[pickle.REDUCE] = _
82+
return unpickler.load()
83+
7084
try:
71-
retVal = pickle.loads(base64decode(value))
85+
retVal = loads(base64decode(value))
7286
except TypeError:
73-
retVal = pickle.loads(base64decode(bytes(value)))
87+
retVal = loads(base64decode(bytes(value)))
7488

7589
return retVal
7690

0 commit comments

Comments
 (0)