libshiboken: Fix a crash in Shiboken::Object::isValid() for Python 3.11
authorFriedemann Kleint <Friedemann.Kleint@qt.io>
Thu, 9 Jun 2022 14:50:41 +0000 (16:50 +0200)
committerDmitry Shachnev <mitya57@debian.org>
Sat, 7 Jan 2023 13:38:12 +0000 (13:38 +0000)
The function is passed type objects for class methods, which caused
it to crash.

The first clause did not catch this, and so it was cast to SbkObject
below.

Add a type check to prevent this.

Pick-to: 6.3 6.2 5.15
Task-number: PYSIDE-1960
Change-Id: Icfdd6fefb7156ac5961444bd5395109849a1d66e
Reviewed-by: Christian Tismer <tismer@stackless.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
(cherry picked from commit 52df3b8f64d08f412d7f8b12d82fc0ae6f3c741d)

Gbp-Pq: Name libshiboken-Fix-a-crash-in-Shiboken-Object-isValid.patch

sources/shiboken2/libshiboken/basewrapper.cpp

index 7ac7fada2a86a5e6df284fbacc87289b10c18a0e..917b74326acb4d9c0e0265fc2b6bd2bff85a41a8 100644 (file)
@@ -1525,6 +1525,7 @@ bool setCppPointer(SbkObject *sbkObj, PyTypeObject *desiredType, void *cptr)
 bool isValid(PyObject *pyObj)
 {
     if (!pyObj || pyObj == Py_None
+        || PyType_Check(pyObj) != 0
         || Py_TYPE(Py_TYPE(pyObj)) != SbkObjectType_TypeF()) {
         return true;
     }