]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/libsystemd/sd-bus/test-bus-marshal.c
test-bus-marshall: add a hopefully helpful comment
[thirdparty/systemd.git] / src / libsystemd / sd-bus / test-bus-marshal.c
index cc1b61ce58538f745c48e8e2a313db4ef2f0e218..d7d51ba9504f4b2bc9196d8c8851d0de37503b51 100644 (file)
 #include "bus-label.h"
 #include "bus-message.h"
 #include "bus-util.h"
+#include "escape.h"
 #include "fd-util.h"
-#include "hexdecoct.h"
+#include "fileio.h"
 #include "log.h"
+#include "tests.h"
 #include "util.h"
 
 static void test_bus_path_encode_unique(void) {
@@ -110,7 +112,7 @@ int main(int argc, char *argv[]) {
         uint8_t u, v;
         void *buffer = NULL;
         size_t sz;
-        char *h;
+        _cleanup_free_ char *h = NULL;
         const int32_t integer_array[] = { -1, -2, 0, 1, 2 }, *return_array;
         char *s;
         _cleanup_free_ char *first = NULL, *second = NULL, *third = NULL;
@@ -120,9 +122,13 @@ int main(int argc, char *argv[]) {
         double dbl;
         uint64_t u64;
 
+        test_setup_logging(LOG_INFO);
+
         r = sd_bus_default_user(&bus);
         if (r < 0)
-                return EXIT_TEST_SKIP;
+                r = sd_bus_default_system(&bus);
+        if (r < 0)
+                return log_tests_skipped("Failed to connect to bus");
 
         r = sd_bus_message_new_method_call(bus, &m, "foobar.waldo", "/", "foobar.waldo", "Piep");
         assert_se(r >= 0);
@@ -149,7 +155,7 @@ int main(int argc, char *argv[]) {
         assert_se(r >= 0);
 
         r = sd_bus_message_append(m, "()");
-        assert_se(r >= 0);
+        assert_se(r == -EINVAL);
 
         r = sd_bus_message_append(m, "ba(ss)", 255, 3, "aaa", "1", "bbb", "2", "ccc", "3");
         assert_se(r >= 0);
@@ -184,7 +190,7 @@ int main(int argc, char *argv[]) {
 
         bus_message_dump(m, stdout, BUS_MESSAGE_DUMP_WITH_HEADER);
 
-        ms = open_memstream(&first, &first_size);
+        ms = open_memstream_unlocked(&first, &first_size);
         bus_message_dump(m, ms, 0);
         fflush(ms);
         assert_se(!ferror(ms));
@@ -192,14 +198,13 @@ int main(int argc, char *argv[]) {
         r = bus_message_get_blob(m, &buffer, &sz);
         assert_se(r >= 0);
 
-        h = hexmem(buffer, sz);
+        h = cescape_length(buffer, sz);
         assert_se(h);
-
         log_info("message size = %zu, contents =\n%s", sz, h);
-        free(h);
 
 #if HAVE_GLIB
-#ifndef __SANITIZE_ADDRESS__
+        /* Work-around for asan bug. See c8d980a3e962aba2ea3a4cedf75fa94890a6d746. */
+#if !HAS_FEATURE_ADDRESS_SANITIZER
         {
                 GDBusMessage *g;
                 char *p;
@@ -242,7 +247,7 @@ int main(int argc, char *argv[]) {
         bus_message_dump(m, stdout, BUS_MESSAGE_DUMP_WITH_HEADER);
 
         fclose(ms);
-        ms = open_memstream(&second, &second_size);
+        ms = open_memstream_unlocked(&second, &second_size);
         bus_message_dump(m, ms, 0);
         fflush(ms);
         assert_se(!ferror(ms));
@@ -293,7 +298,7 @@ int main(int argc, char *argv[]) {
         assert_se(v == 10);
 
         r = sd_bus_message_read(m, "()");
-        assert_se(r > 0);
+        assert_se(r < 0);
 
         r = sd_bus_message_read(m, "ba(ss)", &boolean, 3, &x, &y, &a, &b, &c, &d);
         assert_se(r > 0);
@@ -348,7 +353,7 @@ int main(int argc, char *argv[]) {
         assert_se(r >= 0);
 
         fclose(ms);
-        ms = open_memstream(&third, &third_size);
+        ms = open_memstream_unlocked(&third, &third_size);
         bus_message_dump(copy, ms, 0);
         fflush(ms);
         assert_se(!ferror(ms));
@@ -374,7 +379,7 @@ int main(int argc, char *argv[]) {
 
         assert_se(sd_bus_message_verify_type(m, 'a', "{yv}") > 0);
 
-        r = sd_bus_message_skip(m, "a{yv}y(ty)y(yt)y()");
+        r = sd_bus_message_skip(m, "a{yv}y(ty)y(yt)y");
         assert_se(r >= 0);
 
         assert_se(sd_bus_message_verify_type(m, 'b', NULL) > 0);