chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sd-bus: fix handling of double parameters in sd_bus_message_append()
[elogind.git]
/
src
/
libsystemd
/
sd-bus
/
test-bus-marshal.c
diff --git
a/src/libsystemd/sd-bus/test-bus-marshal.c
b/src/libsystemd/sd-bus/test-bus-marshal.c
index 2321873da53d65536ab4c2ae0ec710acf0047816..d95a03c221a1d1bfec846c07f1fc610f0a3e770d 100644
(file)
--- a/
src/libsystemd/sd-bus/test-bus-marshal.c
+++ b/
src/libsystemd/sd-bus/test-bus-marshal.c
@@
-22,6
+22,7
@@
#include <assert.h>
#include <stdlib.h>
#include <byteswap.h>
#include <assert.h>
#include <stdlib.h>
#include <byteswap.h>
+#include <math.h>
#ifdef HAVE_GLIB
#include <gio/gio.h>
#ifdef HAVE_GLIB
#include <gio/gio.h>
@@
-93,8
+94,15
@@
int main(int argc, char *argv[]) {
_cleanup_free_ char *first = NULL, *second = NULL, *third = NULL;
_cleanup_fclose_ FILE *ms = NULL;
size_t first_size = 0, second_size = 0, third_size = 0;
_cleanup_free_ char *first = NULL, *second = NULL, *third = NULL;
_cleanup_fclose_ FILE *ms = NULL;
size_t first_size = 0, second_size = 0, third_size = 0;
+ _cleanup_bus_unref_ sd_bus *bus = NULL;
+ double dbl;
+ uint64_t u64;
- r = sd_bus_message_new_method_call(NULL, &m, "foobar.waldo", "/", "foobar.waldo", "Piep");
+ r = sd_bus_default_system(&bus);
+ if (r < 0)
+ return EXIT_TEST_SKIP;
+
+ r = sd_bus_message_new_method_call(bus, &m, "foobar.waldo", "/", "foobar.waldo", "Piep");
assert_se(r >= 0);
r = sd_bus_message_append(m, "");
assert_se(r >= 0);
r = sd_bus_message_append(m, "");
@@
-140,13
+148,16
@@
int main(int argc, char *argv[]) {
r = sd_bus_message_append_array(m, 'u', NULL, 0);
assert_se(r >= 0);
r = sd_bus_message_append_array(m, 'u', NULL, 0);
assert_se(r >= 0);
+ r = sd_bus_message_append(m, "a(stdo)", 1, "foo", 815ULL, 47.0, "/");
+ assert_se(r >= 0);
+
r = bus_message_seal(m, 4711, 0);
assert_se(r >= 0);
r = bus_message_seal(m, 4711, 0);
assert_se(r >= 0);
- bus_message_dump(m, stdout,
true
);
+ bus_message_dump(m, stdout,
BUS_MESSAGE_DUMP_WITH_HEADER
);
ms = open_memstream(&first, &first_size);
ms = open_memstream(&first, &first_size);
- bus_message_dump(m, ms,
false
);
+ bus_message_dump(m, ms,
0
);
fflush(ms);
assert_se(!ferror(ms));
fflush(ms);
assert_se(!ferror(ms));
@@
-156,7
+167,7
@@
int main(int argc, char *argv[]) {
h = hexmem(buffer, sz);
assert_se(h);
h = hexmem(buffer, sz);
assert_se(h);
- log_info("message size = %
lu, contents =\n%s", (unsigned long)
sz, h);
+ log_info("message size = %
zu, contents =\n%s",
sz, h);
free(h);
#ifdef HAVE_GLIB
free(h);
#ifdef HAVE_GLIB
@@
-193,14
+204,14
@@
int main(int argc, char *argv[]) {
m = sd_bus_message_unref(m);
m = sd_bus_message_unref(m);
- r = bus_message_from_malloc(
NULL
, buffer, sz, NULL, 0, NULL, NULL, &m);
+ r = bus_message_from_malloc(
bus
, buffer, sz, NULL, 0, NULL, NULL, &m);
assert_se(r >= 0);
assert_se(r >= 0);
- bus_message_dump(m, stdout,
true
);
+ bus_message_dump(m, stdout,
BUS_MESSAGE_DUMP_WITH_HEADER
);
fclose(ms);
ms = open_memstream(&second, &second_size);
fclose(ms);
ms = open_memstream(&second, &second_size);
- bus_message_dump(m, ms,
false
);
+ bus_message_dump(m, ms,
0
);
fflush(ms);
assert_se(!ferror(ms));
assert_se(first_size == second_size);
fflush(ms);
assert_se(!ferror(ms));
assert_se(first_size == second_size);
@@
-263,10
+274,17
@@
int main(int argc, char *argv[]) {
assert_se(r > 0);
assert_se(sz == 0);
assert_se(r > 0);
assert_se(sz == 0);
+ r = sd_bus_message_read(m, "a(stdo)", 1, &x, &u64, &dbl, &y);
+ assert_se(r > 0);
+ assert_se(streq(x, "foo"));
+ assert_se(u64 == 815ULL);
+ assert_se(fabs(dbl - 47.0) < 0.1);
+ assert_se(streq(y, "/"));
+
r = sd_bus_message_peek_type(m, NULL, NULL);
assert_se(r == 0);
r = sd_bus_message_peek_type(m, NULL, NULL);
assert_se(r == 0);
- r = sd_bus_message_new_method_call(
NULL
, ©, "foobar.waldo", "/", "foobar.waldo", "Piep");
+ r = sd_bus_message_new_method_call(
bus
, ©, "foobar.waldo", "/", "foobar.waldo", "Piep");
assert_se(r >= 0);
r = sd_bus_message_rewind(m, true);
assert_se(r >= 0);
r = sd_bus_message_rewind(m, true);
@@
-280,7
+298,7
@@
int main(int argc, char *argv[]) {
fclose(ms);
ms = open_memstream(&third, &third_size);
fclose(ms);
ms = open_memstream(&third, &third_size);
- bus_message_dump(copy, ms,
false
);
+ bus_message_dump(copy, ms,
0
);
fflush(ms);
assert_se(!ferror(ms));
fflush(ms);
assert_se(!ferror(ms));