import swig-3.0.12-19.module+el8.3.0+6248+838326ab
This commit is contained in:
parent
6bf66b9edc
commit
ca7db04951
@ -0,0 +1,346 @@
|
|||||||
|
From b0e29fbdf31bb94b11cb8a7cc830b4a76467afa3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: William S Fulton <wsf@fultondesigns.co.uk>
|
||||||
|
Date: Mon, 4 Dec 2017 18:41:55 +0000
|
||||||
|
Subject: [PATCH] Add missing checks for failures in calls to
|
||||||
|
PyUnicode_AsUTF8String.
|
||||||
|
|
||||||
|
Previously a seg fault could occur when passing invalid UTF8 strings (low
|
||||||
|
surrogates), eg passing u"\udcff" to the C layer (Python 3).
|
||||||
|
---
|
||||||
|
CHANGES.current | 8 ++++++-
|
||||||
|
Doc/Manual/Python.html | 22 ++++++++++++++++---
|
||||||
|
Doc/Manual/Varargs.html | 5 ++++-
|
||||||
|
Examples/python/multimap/example.i | 12 +++++++++-
|
||||||
|
.../python/unicode_strings_runme.py | 10 +++++++++
|
||||||
|
Examples/test-suite/python_varargs_typemap.i | 5 ++++-
|
||||||
|
Examples/test-suite/unicode_strings.i | 2 ++
|
||||||
|
Lib/python/pyerrors.swg | 11 ++++++----
|
||||||
|
Lib/python/pyhead.swg | 16 ++++++++------
|
||||||
|
Lib/python/pyinit.swg | 4 ++--
|
||||||
|
Lib/python/pyrun.swg | 10 ++++++---
|
||||||
|
Lib/python/pystrings.swg | 12 ++++++++--
|
||||||
|
12 files changed, 92 insertions(+), 25 deletions(-)
|
||||||
|
|
||||||
|
#diff --git a/CHANGES.current b/CHANGES.current
|
||||||
|
#index 5cab80172..06b958f18 100644
|
||||||
|
#--- a/CHANGES.current
|
||||||
|
#+++ b/CHANGES.current
|
||||||
|
#@@ -6,8 +6,14 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/
|
||||||
|
#
|
||||||
|
# Version 4.0.0 (in progress)
|
||||||
|
# ===========================
|
||||||
|
#+
|
||||||
|
#+2017-12-04: wsfulton
|
||||||
|
#+ [Python] Add missing checks for failures in calls to PyUnicode_AsUTF8String. Previously a
|
||||||
|
#+ seg fault could occur when passing invalid UTF8 strings (low surrogates), eg passing
|
||||||
|
#+ u"\udcff" to the C layer (Python 3).
|
||||||
|
#+
|
||||||
|
# 2017-11-24: joequant
|
||||||
|
#- Fix github #1124 and return R_NilValue for null pointers
|
||||||
|
#+ Fix #1124 and return R_NilValue for null pointers
|
||||||
|
#
|
||||||
|
# 2017-11-29: wsfulton
|
||||||
|
# [Java] director exception handling improvements.
|
||||||
|
#diff --git a/Doc/Manual/Python.html b/Doc/Manual/Python.html
|
||||||
|
#index 0c0023dea..27ce084bd 100644
|
||||||
|
#--- a/Doc/Manual/Python.html
|
||||||
|
#+++ b/Doc/Manual/Python.html
|
||||||
|
#@@ -6521,14 +6521,16 @@ string that cannot be completely decoded as UTF-8:
|
||||||
|
# <div class="code"><pre>
|
||||||
|
# %module example
|
||||||
|
#
|
||||||
|
#-%include <std_string.i>
|
||||||
|
#-
|
||||||
|
# %inline %{
|
||||||
|
#
|
||||||
|
#-const char* non_utf8_c_str(void) {
|
||||||
|
#+const char * non_utf8_c_str(void) {
|
||||||
|
# return "h\xe9llo w\xc3\xb6rld";
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
#+void instring(const char *s) {
|
||||||
|
#+ ...
|
||||||
|
#+}
|
||||||
|
#+
|
||||||
|
# %}
|
||||||
|
# </pre></div>
|
||||||
|
#
|
||||||
|
#@@ -6590,6 +6592,20 @@ For more details about the <tt>surrogateescape</tt> error handler, please see
|
||||||
|
# <a href="https://www.python.org/dev/peps/pep-0383/">PEP 383</a>.
|
||||||
|
# </p>
|
||||||
|
#
|
||||||
|
#+<p>
|
||||||
|
#+When Python 3 strings are passed to the C/C++ layer, they are expected to be valid UTF8 Unicode strings too.
|
||||||
|
#+For example, when the <tt>instring</tt> method above is wrapped and called, any invalid UTF8 Unicode code strings
|
||||||
|
#+will result in a TypeError because the attempted conversion fails:
|
||||||
|
#+</p>
|
||||||
|
#+
|
||||||
|
#+<div class="targetlang"><pre>
|
||||||
|
#+>>> example.instring('h\xe9llo')
|
||||||
|
#+>>> example.instring('h\udce9llo')
|
||||||
|
#+Traceback (most recent call last):
|
||||||
|
#+ File "<stdin>", line 1, in <module>
|
||||||
|
#+TypeError: in method 'instring', argument 1 of type 'char const *'
|
||||||
|
#+</pre></div>
|
||||||
|
#+
|
||||||
|
# <p>
|
||||||
|
# In some cases, users may wish to instead handle all byte strings as bytes
|
||||||
|
# objects in Python 3. This can be accomplished by adding
|
||||||
|
#diff --git a/Doc/Manual/Varargs.html b/Doc/Manual/Varargs.html
|
||||||
|
#index eba816382..014a38cae 100644
|
||||||
|
#--- a/Doc/Manual/Varargs.html
|
||||||
|
#+++ b/Doc/Manual/Varargs.html
|
||||||
|
#@@ -529,8 +529,11 @@ like this:
|
||||||
|
# SWIG_fail;
|
||||||
|
# }
|
||||||
|
# pystr = PyUnicode_AsUTF8String(pyobj);
|
||||||
|
#+ if (!pystr) {
|
||||||
|
#+ SWIG_fail;
|
||||||
|
#+ }
|
||||||
|
# str = strdup(PyBytes_AsString(pystr));
|
||||||
|
#- Py_XDECREF(pystr);
|
||||||
|
#+ Py_DECREF(pystr);
|
||||||
|
# %#else
|
||||||
|
# if (!PyString_Check(pyobj)) {
|
||||||
|
# PyErr_SetString(PyExc_ValueError, "Expected a string");
|
||||||
|
diff --git a/Examples/python/multimap/example.i b/Examples/python/multimap/example.i
|
||||||
|
index 66c0f74c6..3ff5d52c0 100644
|
||||||
|
--- a/Examples/python/multimap/example.i
|
||||||
|
+++ b/Examples/python/multimap/example.i
|
||||||
|
@@ -39,7 +39,11 @@ extern int gcd(int x, int y);
|
||||||
|
%#if PY_VERSION_HEX >= 0x03000000
|
||||||
|
{
|
||||||
|
PyObject *utf8str = PyUnicode_AsUTF8String(s);
|
||||||
|
- const char *cstr = PyBytes_AsString(utf8str);
|
||||||
|
+ const char *cstr;
|
||||||
|
+ if (!utf8str) {
|
||||||
|
+ SWIG_fail;
|
||||||
|
+ }
|
||||||
|
+ cstr = PyBytes_AsString(utf8str);
|
||||||
|
$2[i] = strdup(cstr);
|
||||||
|
Py_DECREF(utf8str);
|
||||||
|
}
|
||||||
|
@@ -72,6 +76,9 @@ extern int gcdmain(int argc, char *argv[]);
|
||||||
|
SWIG_fail;
|
||||||
|
}
|
||||||
|
utf8str = PyUnicode_AsUTF8String($input);
|
||||||
|
+ if (!utf8str) {
|
||||||
|
+ SWIG_fail;
|
||||||
|
+ }
|
||||||
|
PyBytes_AsStringAndSize(utf8str, &cstr, &len);
|
||||||
|
$1 = strncpy((char *)malloc(len+1), cstr, (size_t)len);
|
||||||
|
$2 = (int)len;
|
||||||
|
@@ -105,6 +112,9 @@ extern int count(char *bytes, int len, char c);
|
||||||
|
char *cstr;
|
||||||
|
Py_ssize_t len;
|
||||||
|
PyObject *utf8str = PyUnicode_AsUTF8String($input);
|
||||||
|
+ if (!utf8str) {
|
||||||
|
+ SWIG_fail;
|
||||||
|
+ }
|
||||||
|
PyBytes_AsStringAndSize(utf8str, &cstr, &len);
|
||||||
|
$1 = strncpy((char *)malloc(len+1), cstr, (size_t)len);
|
||||||
|
$2 = (int)len;
|
||||||
|
diff --git a/Examples/test-suite/python/unicode_strings_runme.py b/Examples/test-suite/python/unicode_strings_runme.py
|
||||||
|
index fa9c51437..39e93b0fc 100644
|
||||||
|
--- a/Examples/test-suite/python/unicode_strings_runme.py
|
||||||
|
+++ b/Examples/test-suite/python/unicode_strings_runme.py
|
||||||
|
@@ -25,3 +25,13 @@ if sys.version_info[0:2] < (3, 0):
|
||||||
|
check(unicode_strings.charstring(unicode("hello4")), "hello4")
|
||||||
|
unicode_strings.charstring(u"hell\xb05")
|
||||||
|
unicode_strings.charstring(u"hell\u00f66")
|
||||||
|
+
|
||||||
|
+low_surrogate_string = u"\udcff"
|
||||||
|
+try:
|
||||||
|
+ unicode_strings.instring(low_surrogate_string)
|
||||||
|
+ # Will succeed with Python 2
|
||||||
|
+except TypeError, e:
|
||||||
|
+ # Python 3 will fail the PyUnicode_AsUTF8String conversion resulting in a TypeError.
|
||||||
|
+ # The real error is actually:
|
||||||
|
+ # UnicodeEncodeError: 'utf-8' codec can't encode character '\udcff' in position 0: surrogates not allowed
|
||||||
|
+ pass
|
||||||
|
diff --git a/Examples/test-suite/python_varargs_typemap.i b/Examples/test-suite/python_varargs_typemap.i
|
||||||
|
index f05fb98eb..d809bf1fa 100644
|
||||||
|
--- a/Examples/test-suite/python_varargs_typemap.i
|
||||||
|
+++ b/Examples/test-suite/python_varargs_typemap.i
|
||||||
|
@@ -23,8 +23,11 @@
|
||||||
|
SWIG_fail;
|
||||||
|
}
|
||||||
|
pystr = PyUnicode_AsUTF8String(pyobj);
|
||||||
|
+ if (!pystr) {
|
||||||
|
+ SWIG_fail;
|
||||||
|
+ }
|
||||||
|
str = strdup(PyBytes_AsString(pystr));
|
||||||
|
- Py_XDECREF(pystr);
|
||||||
|
+ Py_DECREF(pystr);
|
||||||
|
%#else
|
||||||
|
if (!PyString_Check(pyobj)) {
|
||||||
|
PyErr_SetString(PyExc_ValueError, "Expected a string");
|
||||||
|
diff --git a/Examples/test-suite/unicode_strings.i b/Examples/test-suite/unicode_strings.i
|
||||||
|
index 9be3748e6..e7266266e 100644
|
||||||
|
--- a/Examples/test-suite/unicode_strings.i
|
||||||
|
+++ b/Examples/test-suite/unicode_strings.i
|
||||||
|
@@ -20,4 +20,6 @@ char *charstring(char *s) {
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
+void instring(const char *s) {
|
||||||
|
+}
|
||||||
|
%}
|
||||||
|
diff --git a/Lib/python/pyerrors.swg b/Lib/python/pyerrors.swg
|
||||||
|
index fe7313554..463afae15 100644
|
||||||
|
--- a/Lib/python/pyerrors.swg
|
||||||
|
+++ b/Lib/python/pyerrors.swg
|
||||||
|
@@ -53,14 +53,17 @@ SWIG_Python_AddErrorMsg(const char* mesg)
|
||||||
|
PyObject *value = 0;
|
||||||
|
PyObject *traceback = 0;
|
||||||
|
|
||||||
|
- if (PyErr_Occurred()) PyErr_Fetch(&type, &value, &traceback);
|
||||||
|
+ if (PyErr_Occurred())
|
||||||
|
+ PyErr_Fetch(&type, &value, &traceback);
|
||||||
|
if (value) {
|
||||||
|
- char *tmp;
|
||||||
|
PyObject *old_str = PyObject_Str(value);
|
||||||
|
+ const char *tmp = SWIG_Python_str_AsChar(old_str);
|
||||||
|
PyErr_Clear();
|
||||||
|
Py_XINCREF(type);
|
||||||
|
-
|
||||||
|
- PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg);
|
||||||
|
+ if (tmp)
|
||||||
|
+ PyErr_Format(type, "%s %s", tmp, mesg);
|
||||||
|
+ else
|
||||||
|
+ PyErr_Format(type, "%s", mesg);
|
||||||
|
SWIG_Python_str_DelForPy3(tmp);
|
||||||
|
Py_DECREF(old_str);
|
||||||
|
Py_DECREF(value);
|
||||||
|
diff --git a/Lib/python/pyhead.swg b/Lib/python/pyhead.swg
|
||||||
|
index 55eb95a6d..2fa8b5b4c 100644
|
||||||
|
--- a/Lib/python/pyhead.swg
|
||||||
|
+++ b/Lib/python/pyhead.swg
|
||||||
|
@@ -38,14 +38,16 @@ SWIGINTERN char*
|
||||||
|
SWIG_Python_str_AsChar(PyObject *str)
|
||||||
|
{
|
||||||
|
#if PY_VERSION_HEX >= 0x03000000
|
||||||
|
- char *cstr;
|
||||||
|
- char *newstr;
|
||||||
|
- Py_ssize_t len;
|
||||||
|
+ char *newstr = 0;
|
||||||
|
str = PyUnicode_AsUTF8String(str);
|
||||||
|
- PyBytes_AsStringAndSize(str, &cstr, &len);
|
||||||
|
- newstr = (char *) malloc(len+1);
|
||||||
|
- memcpy(newstr, cstr, len+1);
|
||||||
|
- Py_XDECREF(str);
|
||||||
|
+ if (str) {
|
||||||
|
+ char *cstr;
|
||||||
|
+ Py_ssize_t len;
|
||||||
|
+ PyBytes_AsStringAndSize(str, &cstr, &len);
|
||||||
|
+ newstr = (char *) malloc(len+1);
|
||||||
|
+ memcpy(newstr, cstr, len+1);
|
||||||
|
+ Py_XDECREF(str);
|
||||||
|
+ }
|
||||||
|
return newstr;
|
||||||
|
#else
|
||||||
|
return PyString_AsString(str);
|
||||||
|
diff --git a/Lib/python/pyinit.swg b/Lib/python/pyinit.swg
|
||||||
|
index fe45ac941..826f8411b 100644
|
||||||
|
--- a/Lib/python/pyinit.swg
|
||||||
|
+++ b/Lib/python/pyinit.swg
|
||||||
|
@@ -84,10 +84,10 @@ swig_varlink_str(swig_varlinkobject *v) {
|
||||||
|
|
||||||
|
SWIGINTERN int
|
||||||
|
swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) {
|
||||||
|
- char *tmp;
|
||||||
|
PyObject *str = swig_varlink_str(v);
|
||||||
|
+ const char *tmp = SWIG_Python_str_AsChar(str);
|
||||||
|
fprintf(fp,"Swig global variables ");
|
||||||
|
- fprintf(fp,"%s\n", tmp = SWIG_Python_str_AsChar(str));
|
||||||
|
+ fprintf(fp,"%s\n", tmp ? tmp : "Invalid global variable");
|
||||||
|
SWIG_Python_str_DelForPy3(tmp);
|
||||||
|
Py_DECREF(str);
|
||||||
|
return 0;
|
||||||
|
diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg
|
||||||
|
index efc476613..430d3af18 100644
|
||||||
|
--- a/Lib/python/pyrun.swg
|
||||||
|
+++ b/Lib/python/pyrun.swg
|
||||||
|
@@ -1672,14 +1672,16 @@ SWIG_Python_AddErrMesg(const char* mesg, int infront)
|
||||||
|
PyObject *traceback = 0;
|
||||||
|
PyErr_Fetch(&type, &value, &traceback);
|
||||||
|
if (value) {
|
||||||
|
- char *tmp;
|
||||||
|
PyObject *old_str = PyObject_Str(value);
|
||||||
|
+ const char *tmp = SWIG_Python_str_AsChar(old_str);
|
||||||
|
+ if (!tmp)
|
||||||
|
+ tmp = "Invalid error message";
|
||||||
|
Py_XINCREF(type);
|
||||||
|
PyErr_Clear();
|
||||||
|
if (infront) {
|
||||||
|
- PyErr_Format(type, "%s %s", mesg, tmp = SWIG_Python_str_AsChar(old_str));
|
||||||
|
+ PyErr_Format(type, "%s %s", mesg, tmp);
|
||||||
|
} else {
|
||||||
|
- PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg);
|
||||||
|
+ PyErr_Format(type, "%s %s", tmp, mesg);
|
||||||
|
}
|
||||||
|
SWIG_Python_str_DelForPy3(tmp);
|
||||||
|
Py_DECREF(old_str);
|
||||||
|
@@ -1805,6 +1807,8 @@ SWIG_Python_NonDynamicSetAttr(PyObject *obj, PyObject *name, PyObject *value) {
|
||||||
|
Py_INCREF(name);
|
||||||
|
} else {
|
||||||
|
encoded_name = PyUnicode_AsUTF8String(name);
|
||||||
|
+ if (!encoded_name)
|
||||||
|
+ return -1;
|
||||||
|
}
|
||||||
|
PyErr_Format(PyExc_AttributeError, "'%.100s' object has no attribute '%.200s'", tp->tp_name, PyString_AsString(encoded_name));
|
||||||
|
Py_DECREF(encoded_name);
|
||||||
|
diff --git a/Lib/python/pystrings.swg b/Lib/python/pystrings.swg
|
||||||
|
index fd37855eb..301e0f3e1 100644
|
||||||
|
--- a/Lib/python/pystrings.swg
|
||||||
|
+++ b/Lib/python/pystrings.swg
|
||||||
|
@@ -16,6 +16,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
|
||||||
|
%#endif
|
||||||
|
{
|
||||||
|
char *cstr; Py_ssize_t len;
|
||||||
|
+ int ret = SWIG_OK;
|
||||||
|
%#if PY_VERSION_HEX>=0x03000000
|
||||||
|
%#if !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
|
||||||
|
if (!alloc && cptr) {
|
||||||
|
@@ -26,7 +27,10 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
|
||||||
|
return SWIG_RuntimeError;
|
||||||
|
}
|
||||||
|
obj = PyUnicode_AsUTF8String(obj);
|
||||||
|
- if(alloc) *alloc = SWIG_NEWOBJ;
|
||||||
|
+ if (!obj)
|
||||||
|
+ return SWIG_TypeError;
|
||||||
|
+ if (alloc)
|
||||||
|
+ *alloc = SWIG_NEWOBJ;
|
||||||
|
%#endif
|
||||||
|
PyBytes_AsStringAndSize(obj, &cstr, &len);
|
||||||
|
%#else
|
||||||
|
@@ -64,6 +68,8 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
|
||||||
|
%#endif
|
||||||
|
%#else
|
||||||
|
*cptr = SWIG_Python_str_AsChar(obj);
|
||||||
|
+ if (!*cptr)
|
||||||
|
+ ret = SWIG_TypeError;
|
||||||
|
%#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -71,7 +77,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
|
||||||
|
%#if PY_VERSION_HEX>=0x03000000 && !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
|
||||||
|
Py_XDECREF(obj);
|
||||||
|
%#endif
|
||||||
|
- return SWIG_OK;
|
||||||
|
+ return ret;
|
||||||
|
} else {
|
||||||
|
%#if defined(SWIG_PYTHON_2_UNICODE)
|
||||||
|
%#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
|
||||||
|
@@ -84,6 +90,8 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
|
||||||
|
return SWIG_RuntimeError;
|
||||||
|
}
|
||||||
|
obj = PyUnicode_AsUTF8String(obj);
|
||||||
|
+ if (!obj)
|
||||||
|
+ return SWIG_TypeError;
|
||||||
|
if (PyString_AsStringAndSize(obj, &cstr, &len) != -1) {
|
||||||
|
if (cptr) {
|
||||||
|
if (alloc) *alloc = SWIG_NEWOBJ;
|
||||||
|
--
|
||||||
|
2.21.1
|
||||||
|
|
@ -34,7 +34,7 @@
|
|||||||
Summary: Connects C/C++/Objective C to some high-level programming languages
|
Summary: Connects C/C++/Objective C to some high-level programming languages
|
||||||
Name: swig
|
Name: swig
|
||||||
Version: 3.0.12
|
Version: 3.0.12
|
||||||
Release: 18%{?dist}
|
Release: 19%{?dist}
|
||||||
License: GPLv3+ and BSD
|
License: GPLv3+ and BSD
|
||||||
URL: http://swig.sourceforge.net/
|
URL: http://swig.sourceforge.net/
|
||||||
Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz
|
Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz
|
||||||
@ -61,6 +61,8 @@ Patch7: swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch
|
|||||||
Patch8: swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch
|
Patch8: swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch
|
||||||
Patch9: swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch
|
Patch9: swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch
|
||||||
Patch10: swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch
|
Patch10: swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch
|
||||||
|
# Add missing checks for failures in calls to PyUnicode_AsUTF8String (BZ#1804625)
|
||||||
|
Patch11: swig-3.0.12-Add-missing-checks-for-failures-in-calls-to-PyUnicod.patch
|
||||||
|
|
||||||
BuildRequires: perl-interpreter, pcre-devel
|
BuildRequires: perl-interpreter, pcre-devel
|
||||||
%if %{python2lang}
|
%if %{python2lang}
|
||||||
@ -169,6 +171,7 @@ in gdb.
|
|||||||
%patch8 -p1
|
%patch8 -p1
|
||||||
%patch9 -p1
|
%patch9 -p1
|
||||||
%patch10 -p1
|
%patch10 -p1
|
||||||
|
%patch11 -p1
|
||||||
|
|
||||||
for all in CHANGES README; do
|
for all in CHANGES README; do
|
||||||
iconv -f ISO88591 -t UTF8 < $all > $all.new
|
iconv -f ISO88591 -t UTF8 < $all > $all.new
|
||||||
@ -332,6 +335,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb
|
|||||||
%{_datadir}/%{name}/gdb
|
%{_datadir}/%{name}/gdb
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Apr 03 2020 Jitka Plesnikova <jplesnik@redhat.com> - 3.0.12-19
|
||||||
|
- Add missing checks for failures in calls to PyUnicode_AsUTF8String (bug#1804625)
|
||||||
|
|
||||||
* Fri Jun 22 2018 Jitka Plesnikova <jplesnik@redhat.com> - 3.0.12-18
|
* Fri Jun 22 2018 Jitka Plesnikova <jplesnik@redhat.com> - 3.0.12-18
|
||||||
- Disable using of Python 2
|
- Disable using of Python 2
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user