summaryrefslogtreecommitdiff
path: root/core/systemd/0001-dbus-fix-serialization-of-calendar-timers.patch
diff options
context:
space:
mode:
Diffstat (limited to 'core/systemd/0001-dbus-fix-serialization-of-calendar-timers.patch')
-rw-r--r--core/systemd/0001-dbus-fix-serialization-of-calendar-timers.patch62
1 files changed, 62 insertions, 0 deletions
diff --git a/core/systemd/0001-dbus-fix-serialization-of-calendar-timers.patch b/core/systemd/0001-dbus-fix-serialization-of-calendar-timers.patch
new file mode 100644
index 000000000..0d9f1251d
--- /dev/null
+++ b/core/systemd/0001-dbus-fix-serialization-of-calendar-timers.patch
@@ -0,0 +1,62 @@
+From 3761902e2e120849c283106fd4b78b6adec7367e Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 8 Jan 2013 20:00:01 +0100
+Subject: [PATCH] dbus: fix serialization of calendar timers
+
+---
+ src/core/dbus-timer.c | 25 +++++++++++++++----------
+ 1 file changed, 15 insertions(+), 10 deletions(-)
+
+diff --git a/src/core/dbus-timer.c b/src/core/dbus-timer.c
+index 11d18cb..b22fcb5 100644
+--- a/src/core/dbus-timer.c
++++ b/src/core/dbus-timer.c
+@@ -69,22 +69,28 @@ static int bus_timer_append_timers(DBusMessageIter *i, const char *property, voi
+ return -ENOMEM;
+
+ LIST_FOREACH(value, k, p->values) {
+- char *buf;
++ _cleanup_free_ char *buf = NULL;
+ const char *t;
+ size_t l;
+ bool b;
+
+ t = timer_base_to_string(k->base);
+- assert(endswith(t, "Sec"));
+
+- /* s/Sec/USec/ */
+- l = strlen(t);
+- buf = new(char, l+2);
+- if (!buf)
+- return -ENOMEM;
++ if (endswith(t, "Sec")) {
++
++ /* s/Sec/USec/ */
++ l = strlen(t);
++ buf = new(char, l+2);
++ if (!buf)
++ return -ENOMEM;
+
+- memcpy(buf, t, l-3);
+- memcpy(buf+l-3, "USec", 5);
++ memcpy(buf, t, l-3);
++ memcpy(buf+l-3, "USec", 5);
++ } else {
++ buf = strdup(t);
++ if (!buf)
++ return -ENOMEM;
++ }
+
+ b = dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) &&
+ dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &buf) &&
+@@ -92,7 +98,6 @@ static int bus_timer_append_timers(DBusMessageIter *i, const char *property, voi
+ dbus_message_iter_append_basic(&sub2, DBUS_TYPE_UINT64, &k->next_elapse) &&
+ dbus_message_iter_close_container(&sub, &sub2);
+
+- free(buf);
+ if (!b)
+ return -ENOMEM;
+ }
+--
+1.8.1
+