Include fix for python-3.12 - Closes rhbz#2226378 rhbz#2220571

This commit is contained in:
Mikel Olasagasti Uranga 2023-08-25 11:36:39 +02:00
commit 8e66c543d2
2 changed files with 82 additions and 1 deletions

75
238.patch Normal file
View 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;

View file

@ -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