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?= +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 +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);}