Matej Cepl
709f4f9348
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-nltk?expand=0&rev=51
39 lines
1.1 KiB
Diff
39 lines
1.1 KiB
Diff
From a12d0a6a8cdba58d5e4e5f92ac62bb80fc26c624 Mon Sep 17 00:00:00 2001
|
|
From: Eric Kafe <kafe.eric@gmail.com>
|
|
Date: Tue, 23 Jul 2024 09:09:09 +0200
|
|
Subject: [PATCH] Prevent data.load from unpickling classes or functions
|
|
|
|
---
|
|
nltk/data.py | 11 ++++++++++-
|
|
1 file changed, 10 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/nltk/data.py b/nltk/data.py
|
|
index cc9229b0a2..fb242721c5 100644
|
|
--- a/nltk/data.py
|
|
+++ b/nltk/data.py
|
|
@@ -658,6 +658,15 @@ def retrieve(resource_url, filename=None, verbose=True):
|
|
}
|
|
|
|
|
|
+def restricted_pickle_load(string):
|
|
+ """
|
|
+ Prevents any class or function from loading.
|
|
+ """
|
|
+ from nltk.app.wordnet_app import RestrictedUnpickler
|
|
+
|
|
+ return RestrictedUnpickler(BytesIO(string)).load()
|
|
+
|
|
+
|
|
def load(
|
|
resource_url,
|
|
format="auto",
|
|
@@ -751,7 +760,7 @@ def load(
|
|
if format == "raw":
|
|
resource_val = opened_resource.read()
|
|
elif format == "pickle":
|
|
- resource_val = pickle.load(opened_resource)
|
|
+ resource_val = restricted_pickle_load(opened_resource.read())
|
|
elif format == "json":
|
|
import json
|
|
|