Skip to content

Commit 9519f81

Browse files
Merge pull request from GHSA-mvrw-h7rc-22r8
* 注释调试if分支 * Improve objload security * Update README.md * support pdf url for latex translation --------- Co-authored-by: binary-husky <[email protected]> Co-authored-by: binary-husky <[email protected]>
1 parent edbe98a commit 9519f81

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

toolbox.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import glob
1010
import logging
1111
import uuid
12+
import pickle
1213
from functools import wraps
1314
from shared_utils.config_loader import get_conf
1415
from shared_utils.config_loader import set_conf
@@ -867,23 +868,34 @@ def __exit__(self, exc_type, exc_value, traceback):
867868
os.environ.pop("HTTPS_PROXY")
868869
return
869870

871+
class SafeUnpickler(pickle.Unpickler):
872+
# 定义允许的安全类
873+
safe_classes = {
874+
# 在这里添加其他安全的类
875+
}
876+
877+
def find_class(self, module, name):
878+
# 只允许特定的类进行反序列化
879+
if f'{module}.{name}' in self.safe_classes:
880+
return self.safe_classes[f'{module}.{name}']
881+
# 如果尝试加载未授权的类,则抛出异常
882+
raise pickle.UnpicklingError(f"Attempted to deserialize unauthorized class '{name}' from module '{module}'")
870883

871884
def objdump(obj, file="objdump.tmp"):
872-
import pickle
873885

874886
with open(file, "wb+") as f:
875887
pickle.dump(obj, f)
876888
return
877889

878890

879891
def objload(file="objdump.tmp"):
880-
import pickle, os
892+
import os
881893

882894
if not os.path.exists(file):
883895
return
884896
with open(file, "rb") as f:
885-
return pickle.load(f)
886-
897+
unpickler = SafeUnpickler(f)
898+
return unpickler.load()
887899

888900
def Singleton(cls):
889901
"""

0 commit comments

Comments
 (0)