resolve safe pickle err

This commit is contained in:
binary-husky
2024-06-19 11:59:47 +00:00
parent c5a82f6ab7
commit 15cc08505f
4 changed files with 128 additions and 5 deletions

View File

@@ -8,16 +8,20 @@ class SafeUnpickler(pickle.Unpickler):
# 定义允许的安全类
safe_classes = {
# 在这里添加其他安全的类
'latex_actions.LatexPaperFileGroup': LatexPaperFileGroup,
'latex_actions.LatexPaperSplit' : LatexPaperSplit,
'LatexPaperFileGroup': LatexPaperFileGroup,
'LatexPaperSplit' : LatexPaperSplit,
}
return safe_classes
def find_class(self, module, name):
# 只允许特定的类进行反序列化
self.safe_classes = self.get_safe_classes()
if f'{module}.{name}' in self.safe_classes:
return self.safe_classes[f'{module}.{name}']
match_class_name = None
for class_name in self.safe_classes.keys():
if (class_name in f'{module}.{name}'):
match_class_name = class_name
if match_class_name is not None:
return self.safe_classes[match_class_name]
# 如果尝试加载未授权的类,则抛出异常
raise pickle.UnpicklingError(f"Attempted to deserialize unauthorized class '{name}' from module '{module}'")