Include fix for python-3.12 - Closes rhbz#2226378 rhbz#2220571
This commit is contained in:
parent
74610fcbd4
commit
8e66c543d2
2 changed files with 82 additions and 1 deletions
75
238.patch
Normal file
75
238.patch
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
From a7b3035175488cd26791cd7f935eb1ed03de304a Mon Sep 17 00:00:00 2001
|
||||
From: "Victor M. Alvarez" <plusvic@gmail.com>
|
||||
Date: Wed, 2 Aug 2023 14:42:32 +0200
|
||||
Subject: [PATCH] Fix segfault in Python 3.12b4
|
||||
|
||||
In `flo_read` and `flo_write` there were calls to `Py_DECREF` after releasing the GIL.
|
||||
|
||||
Closes #237
|
||||
---
|
||||
yara-python.c | 34 ++++++++++++++++------------------
|
||||
1 file changed, 16 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/yara-python.c b/yara-python.c
|
||||
index 1d851b9..714317c 100644
|
||||
--- a/yara-python.c
|
||||
+++ b/yara-python.c
|
||||
@@ -1394,29 +1394,28 @@ static size_t flo_read(
|
||||
PyObject* bytes = PyObject_CallMethod(
|
||||
(PyObject*) user_data, "read", "n", (Py_ssize_t) size);
|
||||
|
||||
- PyGILState_Release(gil_state);
|
||||
-
|
||||
- if (bytes != NULL)
|
||||
+ if (bytes == NULL)
|
||||
{
|
||||
- Py_ssize_t len;
|
||||
- char* buffer;
|
||||
-
|
||||
- int result = PyBytes_AsStringAndSize(bytes, &buffer, &len);
|
||||
+ PyGILState_Release(gil_state);
|
||||
+ return i;
|
||||
+ }
|
||||
|
||||
- if (result == -1 || (size_t) len < size)
|
||||
- {
|
||||
- Py_DECREF(bytes);
|
||||
- return i;
|
||||
- }
|
||||
+ Py_ssize_t len;
|
||||
+ char* buffer;
|
||||
|
||||
- memcpy((char*) ptr + i * size, buffer, size);
|
||||
+ int result = PyBytes_AsStringAndSize(bytes, &buffer, &len);
|
||||
|
||||
- Py_DECREF(bytes);
|
||||
- }
|
||||
- else
|
||||
+ if (result == -1 || (size_t) len < size)
|
||||
{
|
||||
+ Py_DECREF(bytes);
|
||||
+ PyGILState_Release(gil_state);
|
||||
return i;
|
||||
}
|
||||
+
|
||||
+ memcpy((char*) ptr + i * size, buffer, size);
|
||||
+
|
||||
+ Py_DECREF(bytes);
|
||||
+ PyGILState_Release(gil_state);
|
||||
}
|
||||
|
||||
return count;
|
||||
@@ -1444,12 +1443,11 @@ static size_t flo_write(
|
||||
(PyObject*) user_data, "write", "s#", (char*) ptr + i * size, size);
|
||||
#endif
|
||||
|
||||
+ Py_XDECREF(result);
|
||||
PyGILState_Release(gil_state);
|
||||
|
||||
if (result == NULL)
|
||||
return i;
|
||||
-
|
||||
- Py_DECREF(result);
|
||||
}
|
||||
|
||||
return count;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
Name: python-yara
|
||||
Version: 4.3.1
|
||||
%global baserelease 3
|
||||
%global baserelease 4
|
||||
Summary: Python binding for the YARA pattern matching tool
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/VirusTotal/yara-python/
|
||||
|
|
@ -40,6 +40,9 @@ Release: %{baserelease}.%{gitdate}git%{shortcommit}%{?dist}
|
|||
Source0: https://github.com/%{gituser}/%{gitname}/archive/%{commit}/%{name}-%{version}-%{shortcommit}.tar.gz#/%{name}-%{version}-git%{gitdate}-%{shortcommit}.tar.gz
|
||||
%endif
|
||||
|
||||
# https://github.com/VirusTotal/yara-python/pull/238
|
||||
Patch0: 238.patch
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: pkgconfig(yara)
|
||||
BuildRequires: libtool
|
||||
|
|
@ -150,6 +153,9 @@ pytest-3 -k "$EXCLUDE" tests.py -v
|
|||
|
||||
#====================================================================
|
||||
%changelog
|
||||
* Fri Aug 25 2023 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 4.3.1-4
|
||||
- Fix rhbz#2226378 rhbz#2220571
|
||||
|
||||
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.3.1-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue