X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibsystemd-bus%2Ftest-bus-marshal.c;h=069b0848e644fac7c6dbdbc71ab42f13e9a78518;hp=b7606d7708dca920cb2fdecde029f2e85647bbe7;hb=f98a58fe894d34e4d9675757180f34a8523c936e;hpb=718db96199eb307751264e4163555662c9a389fa diff --git a/src/libsystemd-bus/test-bus-marshal.c b/src/libsystemd-bus/test-bus-marshal.c index b7606d770..069b0848e 100644 --- a/src/libsystemd-bus/test-bus-marshal.c +++ b/src/libsystemd-bus/test-bus-marshal.c @@ -39,6 +39,29 @@ #include "bus-util.h" #include "bus-dump.h" +static void test_bus_label_escape_one(const char *a, const char *b) { + _cleanup_free_ char *t = NULL, *x = NULL, *y = NULL; + + assert_se(t = sd_bus_label_escape(a)); + assert_se(streq(t, b)); + + assert_se(x = sd_bus_label_unescape(t)); + assert_se(streq(a, x)); + + assert_se(y = sd_bus_label_unescape(b)); + assert_se(streq(a, y)); +} + +static void test_bus_label_escape(void) { + test_bus_label_escape_one("foo123bar", "foo123bar"); + test_bus_label_escape_one("foo.bar", "foo_2ebar"); + test_bus_label_escape_one("foo_2ebar", "foo_5f2ebar"); + test_bus_label_escape_one("", "_"); + test_bus_label_escape_one("_", "_5f"); + test_bus_label_escape_one("1", "_31"); + test_bus_label_escape_one(":1", "_3a1"); +} + int main(int argc, char *argv[]) { _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *copy = NULL; int r, boolean; @@ -96,7 +119,7 @@ int main(int argc, char *argv[]) { r = sd_bus_message_append_array(m, 'u', NULL, 0); assert_se(r >= 0); - r = bus_message_seal(m, 4711); + r = bus_message_seal(m, 4711, 0); assert_se(r >= 0); bus_message_dump(m, stdout, true); @@ -140,16 +163,16 @@ int main(int argc, char *argv[]) { dbus_error_init(&error); w = dbus_message_demarshal(buffer, sz, &error); - if (!w) { + if (!w) log_error("%s", error.message); - } else + else dbus_message_unref(w); } #endif m = sd_bus_message_unref(m); - r = bus_message_from_malloc(buffer, sz, NULL, 0, NULL, NULL, &m); + r = bus_message_from_malloc(NULL, buffer, sz, NULL, 0, NULL, NULL, &m); assert_se(r >= 0); bus_message_dump(m, stdout, true); @@ -230,7 +253,7 @@ int main(int argc, char *argv[]) { r = sd_bus_message_copy(copy, m, true); assert_se(r >= 0); - r = bus_message_seal(copy, 4712); + r = bus_message_seal(copy, 4712, 0); assert_se(r >= 0); fclose(ms); @@ -294,5 +317,7 @@ int main(int argc, char *argv[]) { assert_se(streq(c, "ccc")); assert_se(streq(d, "3")); + test_bus_label_escape(); + return 0; }