[systemd] Add patch to fix the Python module

Zbigniew Jędrzejewski-Szmek zbyszek at fedoraproject.org
Thu Aug 15 17:45:08 UTC 2013


commit dc4617f304a253091610c45aca3572869d069da7
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Thu Aug 15 13:29:24 2013 -0400

    Add patch to fix the Python module

 ...hon-check-for-oom-give-nicer-error-messag.patch |   59 ++++++++++++++++++++
 ...hon-fix-initialization-of-_Reader-objects.patch |   40 +++++++++++++
 systemd.spec                                       |    2 +
 3 files changed, 101 insertions(+), 0 deletions(-)
---
diff --git a/systemd-python-check-for-oom-give-nicer-error-messag.patch b/systemd-python-check-for-oom-give-nicer-error-messag.patch
new file mode 100644
index 0000000..f85efb8
--- /dev/null
+++ b/systemd-python-check-for-oom-give-nicer-error-messag.patch
@@ -0,0 +1,59 @@
+From 31f49d022aee9bbb356e52e5483f182d7ffa8d2f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek at in.waw.pl>
+Date: Thu, 15 Aug 2013 12:51:20 -0400
+Subject: [PATCH] systemd-python: check for oom, give nicer error messages
+
+---
+ src/python-systemd/_reader.c | 8 ++++++--
+ src/python-systemd/login.c   | 2 +-
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c
+index 3b1003b..bc5db19 100644
+--- a/src/python-systemd/_reader.c
++++ b/src/python-systemd/_reader.c
+@@ -75,7 +75,7 @@ static int strv_converter(PyObject* obj, void *_result) {
+         assert(result);
+ 
+         if (!obj)
+-            goto cleanup;
++            return 0;
+ 
+         if (obj == Py_None) {
+             *result = NULL;
+@@ -87,6 +87,10 @@ static int strv_converter(PyObject* obj, void *_result) {
+ 
+         len = PySequence_Length(obj);
+         *result = new0(char*, len + 1);
++        if (!*result) {
++            set_error(-ENOMEM, NULL, NULL);
++            return 0;
++        }
+ 
+         for (i = 0; i < len; i++) {
+             PyObject *item;
+@@ -154,7 +158,7 @@ static int Reader_init(Reader *self, PyObject *args, PyObject *keywds)
+     char **files = NULL;
+ 
+     static const char* const kwlist[] = {"flags", "path", "files", NULL};
+-    if (!PyArg_ParseTupleAndKeywords(args, keywds, "|izO&", (char**) kwlist,
++    if (!PyArg_ParseTupleAndKeywords(args, keywds, "|izO&:__init__", (char**) kwlist,
+                                      &flags, &path, strv_converter, &files))
+         return -1;
+ 
+diff --git a/src/python-systemd/login.c b/src/python-systemd/login.c
+index 1e86193..dd2edbc 100644
+--- a/src/python-systemd/login.c
++++ b/src/python-systemd/login.c
+@@ -159,7 +159,7 @@ static int Monitor_init(Monitor *self, PyObject *args, PyObject *keywds)
+         int r;
+ 
+         static const char* const kwlist[] = {"category", NULL};
+-        if (!PyArg_ParseTupleAndKeywords(args, keywds, "|z", (char**) kwlist,
++        if (!PyArg_ParseTupleAndKeywords(args, keywds, "|z:__init__", (char**) kwlist,
+                                          &category))
+                 return -1;
+ 
+-- 
+1.8.2.562.g931e949
+
diff --git a/systemd-python-fix-initialization-of-_Reader-objects.patch b/systemd-python-fix-initialization-of-_Reader-objects.patch
new file mode 100644
index 0000000..a12d6ef
--- /dev/null
+++ b/systemd-python-fix-initialization-of-_Reader-objects.patch
@@ -0,0 +1,40 @@
+From c2748ce28c7111037f312c5446335f5538e673e8 Mon Sep 17 00:00:00 2001
+From: Steven Hiscocks <steven at hiscocks.me.uk>
+Date: Thu, 15 Aug 2013 12:50:32 -0400
+Subject: [PATCH] systemd-python: fix initialization of _Reader objects
+
+https://bugzilla.redhat.com/show_bug.cgi?id=995575
+---
+ src/python-systemd/_reader.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c
+index a678f69..3b1003b 100644
+--- a/src/python-systemd/_reader.c
++++ b/src/python-systemd/_reader.c
+@@ -64,6 +64,10 @@ static PyStructSequence_Desc Monotonic_desc = {
+ };
+ #endif
+ 
++/**
++ * Convert a Python sequence object into a strv (char**), and
++ * None into a NULL pointer.
++ */
+ static int strv_converter(PyObject* obj, void *_result) {
+         char ***result = _result;
+         Py_ssize_t i, len;
+@@ -73,6 +77,11 @@ static int strv_converter(PyObject* obj, void *_result) {
+         if (!obj)
+             goto cleanup;
+ 
++        if (obj == Py_None) {
++            *result = NULL;
++            return 1;
++        }
++
+         if (!PySequence_Check(obj))
+             return 0;
+ 
+-- 
+1.8.2.562.g931e949
+
diff --git a/systemd.spec b/systemd.spec
index 51d1fad..5cda922 100644
--- a/systemd.spec
+++ b/systemd.spec
@@ -35,6 +35,8 @@ Source6:        yum-protect-systemd.conf
 
 # kernel-install patch for grubby, drop if grubby is obsolete
 Patch1000:      kernel-install-grubby.patch
+Patch1001:      systemd-python-fix-initialization-of-_Reader-objects.patch
+Patch1002:      systemd-python-check-for-oom-give-nicer-error-messag.patch
 
 %global num_patches %{lua: c=0; for i,p in ipairs(patches) do c=c+1; end; print(c);}
 


More information about the scm-commits mailing list