You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.5 KiB
46 lines
1.5 KiB
From ab9f2797127b374665c37c06b02121f5dcf7d61c Mon Sep 17 00:00:00 2001 |
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> |
|
Date: Thu, 12 Nov 2020 16:55:56 +0100 |
|
Subject: [PATCH 2/2] reader: make PY_SSIZE_T_CLEAN |
|
|
|
--- |
|
systemd/_reader.c | 15 +++++++++++++-- |
|
1 file changed, 13 insertions(+), 2 deletions(-) |
|
|
|
diff --git a/systemd/_reader.c b/systemd/_reader.c |
|
index 8de7f6a963..3b6a4d0bbc 100644 |
|
--- a/systemd/_reader.c |
|
+++ b/systemd/_reader.c |
|
@@ -18,7 +18,12 @@ |
|
along with python-systemd; If not, see <http://www.gnu.org/licenses/>. |
|
***/ |
|
|
|
+#define PY_SSIZE_T_CLEAN |
|
+#pragma GCC diagnostic push |
|
+#pragma GCC diagnostic ignored "-Wredundant-decls" |
|
#include <Python.h> |
|
+#pragma GCC diagnostic pop |
|
+ |
|
#include <structmember.h> |
|
#include <datetime.h> |
|
#include <time.h> |
|
@@ -710,11 +715,17 @@ PyDoc_STRVAR(Reader_add_match__doc__, |
|
"Match is a string of the form \"FIELD=value\"."); |
|
static PyObject* Reader_add_match(Reader *self, PyObject *args, PyObject *keywds) { |
|
char *match; |
|
- int match_len, r; |
|
+ Py_ssize_t match_len; |
|
+ int r; |
|
if (!PyArg_ParseTuple(args, "s#:add_match", &match, &match_len)) |
|
return NULL; |
|
|
|
- r = sd_journal_add_match(self->j, match, match_len); |
|
+ if (match_len > INT_MAX) { |
|
+ set_error(-ENOBUFS, NULL, NULL); |
|
+ return NULL; |
|
+ } |
|
+ |
|
+ r = sd_journal_add_match(self->j, match, (int) match_len); |
|
if (set_error(r, NULL, "Invalid match") < 0) |
|
return NULL; |
|
|
|
|