Fix Python method descriptors for Python-3.8

This commit is contained in:
chenditang 2020-06-22 19:38:02 +08:00
parent c25711a0d1
commit b6ec40ff18
2 changed files with 62 additions and 2 deletions

View File

@ -0,0 +1,53 @@
From dce9d5d3c1dce16efc223e5a55cec7122fb25276 Mon Sep 17 00:00:00 2001
From: Victor Stinner <vstinner@redhat.com>
Date: Wed, 31 Jul 2019 15:03:36 +0200
Subject: [PATCH] Fix Python method descriptors for Python 3.8
The Python binding cannot be loaded in Python 3.8: import libcomps
fails with:
Traceback (most recent call last):
File "src/python/src/python3/libcomps/__init__.py", line 1, in <module>
from ._libpycomps import *
SystemError: bad call flags
Fedora bug report: https://bugzilla.redhat.com/show_bug.cgi?id=1734777
The problem are the following method descriptors of
libcomps/src/python/src/pycomps.c:
{"categories_match", (PyCFunction)PyCOMPS_categories_match, METH_KEYWORDS,
PyCOMPS_validate__doc__},
{"environments_match", (PyCFunction)PyCOMPS_envs_match, METH_KEYWORDS,
PyCOMPS_validate__doc__},
In Python 3.7, import didn't check descriptor flags (METH_KEYWORDS):
these flags were only checked when the methods were called.
In Python 3.8, the flags are checked at soon as the module is
imported, which prevents the module to be imported.
This change fix the two method descriptors.
---
libcomps/src/python/src/pycomps.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libcomps/src/python/src/pycomps.c b/libcomps/src/python/src/pycomps.c
index b34685c..293a338 100644
--- a/libcomps/src/python/src/pycomps.c
+++ b/libcomps/src/python/src/pycomps.c
@@ -766,9 +766,9 @@ PyDoc_STRVAR(PyCOMPS_arch_filter__doc__,
static PyMethodDef PyCOMPS_methods[] = {
{"groups_match", (PyCFunction)PyCOMPS_groups_match, METH_VARARGS | METH_KEYWORDS,
PyCOMPS_validate__doc__},
- {"categories_match", (PyCFunction)PyCOMPS_categories_match, METH_KEYWORDS,
+ {"categories_match", (PyCFunction)PyCOMPS_categories_match, METH_VARARGS | METH_KEYWORDS,
PyCOMPS_validate__doc__},
- {"environments_match", (PyCFunction)PyCOMPS_envs_match, METH_KEYWORDS,
+ {"environments_match", (PyCFunction)PyCOMPS_envs_match, METH_VARARGS | METH_KEYWORDS,
PyCOMPS_validate__doc__},
{"validate", (PyCFunction)PyCOMPS_validate, METH_NOARGS,
PyCOMPS_validate__doc__},
--
1.8.3.1

View File

@ -3,13 +3,14 @@
Name: libcomps
Version: 0.1.8
Release: 20
Release: 21
Summary: Comps XML file manipulation library
License: GPLv2+
URL: https://github.com/rpm-software-management/libcomps
Source0: %{url}/archive/%{name}-%{version}/%{name}-%{version}.tar.gz
Patch6000: CVE-2019-3817-Fix-UAF-in-comps_objmrtree_unite-function.patch
Patch0000: CVE-2019-3817-Fix-UAF-in-comps_objmrtree_unite-function.patch
Patch0001: Fix-Python-method-descriptors-for-Python-3.8.patch
BuildRequires: gcc cmake zlib-devel libxml2-devel check-devel expat-devel
@ -136,6 +137,12 @@ popd
%endif
%changelog
* Mon Jun 22 2020 chenditang<chenditang1@huawei.com> - 0.1.8-21
- Type:enhancement
- ID:NA
- SUG:NA
- DESC:Fix Python method descriptors for Python-3.8.
* Thu Feb 20 2020 chengquan<chengquan3@huawei.com> - 0.1.8-20
- Type:enhancement
- ID:NA