blob: b809f0a1f0eb28bfc780318a43e224548cf73037 [file] [log] [blame]
/*
*
* Embedded Linux library
*
* Copyright (C) 2011-2014 Intel Corporation. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#define _GNU_SOURCE
#include <assert.h>
#include <math.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <ell/ell.h>
#include "ell/dbus-private.h"
static bool do_print = true;
struct message_data {
const char *type;
const char *sender;
const char *path;
const char *interface;
const char *member;
const char *destination;
const char *signature;
uint32_t serial;
uint32_t reply_serial;
bool no_reply;
bool auto_start;
uint32_t unix_fds;
const unsigned char *binary;
size_t binary_len;
int *fds;
};
static const unsigned char message_binary_basic_1[] = {
0x6c, 0x01, 0x00, 0x01, 0x13, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x01, 0x73, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x4c, 0x69, 0x6e, 0x75,
0x73, 0x20, 0x54, 0x6f, 0x72, 0x76, 0x61, 0x6c,
0x64, 0x73, 0x00,
};
static const struct message_data message_data_basic_1 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "s",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_basic_1,
.binary_len = 147,
};
static const unsigned char message_binary_basic_2[] = {
0x6c, 0x01, 0x00, 0x01, 0x19, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x02, 0x73, 0x73, 0x00,
0x05, 0x00, 0x00, 0x00, 0x4c, 0x69, 0x6e, 0x75,
0x73, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x54, 0x6f, 0x72, 0x76, 0x61, 0x6c, 0x64, 0x73,
0x00,
};
static const struct message_data message_data_basic_2 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "ss",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_basic_2,
.binary_len = 153,
};
static const unsigned char message_binary_basic_3[] = {
0x6c, 0x01, 0x00, 0x01, 0x18, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x02, 0x73, 0x62, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x4c, 0x69, 0x6e, 0x75,
0x73, 0x20, 0x54, 0x6f, 0x72, 0x76, 0x61, 0x6c,
0x64, 0x73, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
};
static const struct message_data message_data_basic_3 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "sb",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_basic_3,
.binary_len = 152,
};
static const unsigned char message_binary_basic_4[] = {
0x6c, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x01, 0x79, 0x00, 0x00,
0x17,
};
static const struct message_data message_data_basic_4 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "y",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_basic_4,
.binary_len = 129,
};
static const unsigned char message_binary_basic_5[] = {
0x6c, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x01, 0x71, 0x00, 0x00,
0x2a, 0x00,
};
static const struct message_data message_data_basic_5 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "q",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_basic_5,
.binary_len = 130,
};
static const unsigned char message_binary_basic_6[] = {
0x6c, 0x01, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x01, 0x75, 0x00, 0x00,
0x67, 0x12, 0x00, 0x00,
};
static const struct message_data message_data_basic_6 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "u",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_basic_6,
.binary_len = 132,
};
static const unsigned char message_binary_basic_7[] = {
0x6c, 0x01, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x01, 0x74, 0x00, 0x00,
0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
static const struct message_data message_data_basic_7 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "t",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_basic_7,
.binary_len = 136,
};
static const unsigned char message_binary_basic_8[] = {
0x6c, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x01, 0x6e, 0x00, 0x00,
0xd6, 0xff,
};
static const struct message_data message_data_basic_8 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "n",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_basic_8,
.binary_len = 130,
};
static const unsigned char message_binary_basic_9[] = {
0x6c, 0x01, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x01, 0x69, 0x00, 0x00,
0x99, 0xed, 0xff, 0xff,
};
static const struct message_data message_data_basic_9 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "i",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_basic_9,
.binary_len = 132,
};
static const unsigned char message_binary_basic_10[] = {
0x6c, 0x01, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x01, 0x78, 0x00, 0x00,
0xf0, 0xd8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
};
static const struct message_data message_data_basic_10 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "x",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_basic_10,
.binary_len = 136,
};
static const unsigned char message_binary_basic_11[] = {
0x6c, 0x01, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x01, 0x64, 0x00, 0x00,
0x18, 0x2d, 0x44, 0x54, 0xfb, 0x21, 0x09, 0x40,
};
static const struct message_data message_data_basic_11 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "d",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_basic_11,
.binary_len = 136,
};
static const unsigned char message_binary_struct_1[] = {
0x6c, 0x01, 0x00, 0x01, 0x19, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x04, 0x28, 0x73, 0x73,
0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x4c, 0x69, 0x6e, 0x75,
0x73, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x54, 0x6f, 0x72, 0x76, 0x61, 0x6c, 0x64, 0x73,
0x00,
};
static const struct message_data message_data_struct_1 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "(ss)",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_struct_1,
.binary_len = 161,
};
static const unsigned char message_binary_struct_2[] = {
0x6c, 0x01, 0x00, 0x01, 0x31, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x07, 0x28, 0x73, 0x28,
0x73, 0x73, 0x29, 0x29, 0x00, 0x00, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x4c, 0x69, 0x6e, 0x75,
0x73, 0x20, 0x54, 0x6f, 0x72, 0x76, 0x61, 0x6c,
0x64, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x4c, 0x69, 0x6e, 0x75,
0x73, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x54, 0x6f, 0x72, 0x76, 0x61, 0x6c, 0x64, 0x73,
0x00,
};
static const struct message_data message_data_struct_2 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "(s(ss))",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_struct_2,
.binary_len = 185,
};
static const unsigned char message_binary_struct_3[] = {
0x6c, 0x01, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x60, 0x28, 0x69, 0x28,
0x69, 0x28, 0x69, 0x28, 0x69, 0x28, 0x69, 0x28,
0x69, 0x28, 0x69, 0x28, 0x69, 0x28, 0x69, 0x28,
0x69, 0x28, 0x69, 0x28, 0x69, 0x28, 0x69, 0x28,
0x69, 0x28, 0x69, 0x28, 0x69, 0x28, 0x69, 0x28,
0x69, 0x28, 0x69, 0x28, 0x69, 0x28, 0x69, 0x28,
0x69, 0x28, 0x69, 0x28, 0x69, 0x28, 0x69, 0x28,
0x69, 0x28, 0x69, 0x28, 0x69, 0x28, 0x69, 0x28,
0x69, 0x28, 0x69, 0x28, 0x69, 0x29, 0x29, 0x29,
0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
0x29, 0x29, 0x29, 0x29, 0x29, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1f, 0x00, 0x00, 0x00};
#define MESSAGE_SIGNATURE_STRUCT_3 \
"(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i" \
"))))))))))))))))))))))))))))))))"
static const struct message_data message_data_struct_3 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = MESSAGE_SIGNATURE_STRUCT_3,
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_struct_3,
.binary_len = 476,
};
#define MESSAGE_SIGNATURE_STRUCT_4 \
"(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i" \
")))))))))))))))))))))))))))))))))"
static const struct message_data message_data_struct_4 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = MESSAGE_SIGNATURE_STRUCT_4,
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
};
static const unsigned char message_binary_array_1[] = {
0x6c, 0x01, 0x00, 0x01, 0x1d, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x02, 0x61, 0x73, 0x00,
0x19, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
0x4c, 0x69, 0x6e, 0x75, 0x73, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x54, 0x6f, 0x72, 0x76,
0x61, 0x6c, 0x64, 0x73, 0x00,
};
static const struct message_data message_data_array_1 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "as",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_array_1,
.binary_len = 157,
};
static const unsigned char message_binary_array_2[] = {
0x6c, 0x01, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x02, 0x61, 0x62, 0x00,
0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
static const struct message_data message_data_array_2 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "ab",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_array_2,
.binary_len = 144,
};
static const unsigned char message_binary_array_3[] = {
0x6c, 0x01, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x03, 0x61, 0x61, 0x73,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3c, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x4c, 0x69, 0x6e, 0x75,
0x73, 0x20, 0x54, 0x6f, 0x72, 0x76, 0x61, 0x6c,
0x64, 0x73, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x4c, 0x69, 0x6e, 0x75,
0x73, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x54, 0x6f, 0x72, 0x76, 0x61, 0x6c, 0x64, 0x73,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
static const struct message_data message_data_array_3 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "aas",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_array_3,
.binary_len = 200,
};
static const unsigned char message_binary_array_4[] = {
0x6c, 0x01, 0x00, 0x01, 0x41, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x05, 0x61, 0x28, 0x73,
0x73, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x4c, 0x69, 0x6e, 0x75,
0x73, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x54, 0x6f, 0x72, 0x76, 0x61, 0x6c, 0x64, 0x73,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x72, 0x63,
0x65, 0x6c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x48, 0x6f, 0x6c, 0x74, 0x6d, 0x61, 0x6e, 0x6e,
0x00,
};
static const struct message_data message_data_array_4 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "a(ss)",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_array_4,
.binary_len = 201,
};
static const unsigned char message_binary_array_5[] = {
0x6c, 0x01, 0x00, 0x01, 0x3d, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x04, 0x61, 0x73, 0x61,
0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
0x4c, 0x69, 0x6e, 0x75, 0x73, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x54, 0x6f, 0x72, 0x76,
0x61, 0x6c, 0x64, 0x73, 0x00, 0x00, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
0x4d, 0x61, 0x72, 0x63, 0x65, 0x6c, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x48, 0x6f, 0x6c, 0x74,
0x6d, 0x61, 0x6e, 0x6e, 0x00,
};
static const struct message_data message_data_array_5 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "asas",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_array_5,
.binary_len = 197,
};
static const unsigned char message_binary_array_6[] = {
0x6c, 0x01, 0x00, 0x01, 0x24, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x02, 0x61, 0x76, 0x00,
0x20, 0x00, 0x00, 0x00, 0x01, 0x73, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x4c, 0x69, 0x6e, 0x75,
0x73, 0x20, 0x54, 0x6f, 0x72, 0x76, 0x61, 0x6c,
0x64, 0x73, 0x00, 0x01, 0x62, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00,
};
static const struct message_data message_data_array_6 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "av",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_array_6,
.binary_len = 164,
};
static const unsigned char message_binary_dict_1[] = {
0x6c, 0x01, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x05, 0x61, 0x7b, 0x73,
0x76, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
static const struct message_data message_data_dict_1 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "a{sv}",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_dict_1,
.binary_len = 144,
};
static const unsigned char message_binary_dict_2[] = {
0x6c, 0x01, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x05, 0x61, 0x7b, 0x73,
0x76, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x4e, 0x61, 0x6d, 0x65,
0x00, 0x01, 0x73, 0x00, 0x0e, 0x00, 0x00, 0x00,
0x4c, 0x69, 0x6e, 0x75, 0x73, 0x20, 0x54, 0x6f,
0x72, 0x76, 0x61, 0x6c, 0x64, 0x73, 0x00, 0x00,
0x09, 0x00, 0x00, 0x00, 0x44, 0x65, 0x76, 0x65,
0x6c, 0x6f, 0x70, 0x65, 0x72, 0x00, 0x01, 0x62,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
};
static const struct message_data message_data_dict_2 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "a{sv}",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_dict_2,
.binary_len = 200,
};
static const unsigned char message_binary_dict_3[] = {
0x6c, 0x01, 0x00, 0x01, 0x41, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x05, 0x61, 0x7b, 0x73,
0x73, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x4c, 0x69, 0x6e, 0x75,
0x73, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x54, 0x6f, 0x72, 0x76, 0x61, 0x6c, 0x64, 0x73,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x72, 0x63,
0x65, 0x6c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x48, 0x6f, 0x6c, 0x74, 0x6d, 0x61, 0x6e, 0x6e,
0x00,
};
static const struct message_data message_data_dict_3 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "a{ss}",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_dict_3,
.binary_len = 201,
};
static const unsigned char message_binary_variant_1[] = {
0x6c, 0x01, 0x00, 0x01, 0x17, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x01, 0x76, 0x00, 0x00,
0x01, 0x73, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
0x4c, 0x69, 0x6e, 0x75, 0x73, 0x20, 0x54, 0x6f,
0x72, 0x76, 0x61, 0x6c, 0x64, 0x73, 0x00,
};
static const struct message_data message_data_variant_1 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "v",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_variant_1,
.binary_len = 151,
};
static const unsigned char message_binary_variant_2[] = {
0x6c, 0x01, 0x00, 0x01, 0x21, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x01, 0x76, 0x00, 0x00,
0x02, 0x61, 0x73, 0x00, 0x19, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x4c, 0x69, 0x6e, 0x75,
0x73, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x54, 0x6f, 0x72, 0x76, 0x61, 0x6c, 0x64, 0x73,
0x00,
};
static const struct message_data message_data_variant_2 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "v",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_variant_2,
.binary_len = 161,
};
static const unsigned char message_binary_variant_3[] = {
0x6c, 0x01, 0x00, 0x01, 0x28, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x01, 0x76, 0x00, 0x00,
0x05, 0x28, 0x73, 0x73, 0x62, 0x29, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x4c, 0x69, 0x6e, 0x75,
0x73, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x54, 0x6f, 0x72, 0x76, 0x61, 0x6c, 0x64, 0x73,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
};
static const struct message_data message_data_variant_3 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "v",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_variant_3,
.binary_len = 168,
};
static const unsigned char message_binary_variant_4[] = {
0x6c, 0x01, 0x00, 0x01, 0x1b, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x01, 0x76, 0x00, 0x00,
0x01, 0x76, 0x00, 0x01, 0x73, 0x00, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x4c, 0x69, 0x6e, 0x75,
0x73, 0x20, 0x54, 0x6f, 0x72, 0x76, 0x61, 0x6c,
0x64, 0x73, 0x00,
};
static const struct message_data message_data_variant_4 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "v",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_variant_4,
.binary_len = 155,
};
static const unsigned char message_binary_variant_5[] = {
0x6c, 0x01, 0x00, 0x01, 0x24, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x01, 0x76, 0x00, 0x00,
0x04, 0x28, 0x73, 0x76, 0x29, 0x00, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x4c, 0x69, 0x6e, 0x75,
0x73, 0x20, 0x54, 0x6f, 0x72, 0x76, 0x61, 0x6c,
0x64, 0x73, 0x00, 0x01, 0x62, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00,
};
static const struct message_data message_data_variant_5 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "v",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_variant_5,
.binary_len = 164,
};
static const unsigned char message_binary_complex_1[] = {
0x6c, 0x01, 0x00, 0x01, 0x58, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x06, 0x6f, 0x61, 0x7b,
0x73, 0x76, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00,
0x13, 0x00, 0x00, 0x00, 0x2f, 0x63, 0x6f, 0x6d,
0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65,
0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x00,
0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x4e, 0x61, 0x6d, 0x65,
0x00, 0x01, 0x73, 0x00, 0x0e, 0x00, 0x00, 0x00,
0x4c, 0x69, 0x6e, 0x75, 0x73, 0x20, 0x54, 0x6f,
0x72, 0x76, 0x61, 0x6c, 0x64, 0x73, 0x00, 0x00,
0x09, 0x00, 0x00, 0x00, 0x44, 0x65, 0x76, 0x65,
0x6c, 0x6f, 0x70, 0x65, 0x72, 0x00, 0x01, 0x62,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
};
static const struct message_data message_data_complex_1 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "oa{sv}",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_complex_1,
.binary_len = 224,
};
static const unsigned char message_binary_complex_2[] = {
0x6c, 0x01, 0x00, 0x01, 0x88, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x09, 0x61, 0x28, 0x6f,
0x61, 0x7b, 0x73, 0x76, 0x7d, 0x29, 0x00, 0x00,
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x14, 0x00, 0x00, 0x00, 0x2f, 0x63, 0x6f, 0x6d,
0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65,
0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x31,
0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x4e, 0x61, 0x6d, 0x65,
0x00, 0x01, 0x73, 0x00, 0x0e, 0x00, 0x00, 0x00,
0x4c, 0x69, 0x6e, 0x75, 0x73, 0x20, 0x54, 0x6f,
0x72, 0x76, 0x61, 0x6c, 0x64, 0x73, 0x00, 0x00,
0x14, 0x00, 0x00, 0x00, 0x2f, 0x63, 0x6f, 0x6d,
0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65,
0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x32,
0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x4e, 0x61, 0x6d, 0x65,
0x00, 0x01, 0x73, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x4d, 0x61, 0x72, 0x63, 0x65, 0x6c, 0x20, 0x48,
0x6f, 0x6c, 0x74, 0x6d, 0x61, 0x6e, 0x6e, 0x00,
};
static const struct message_data message_data_complex_2 = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "a(oa{sv})",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_complex_2,
.binary_len = 272,
};
static const unsigned char message_binary_complex_3[] = {
0x6c, 0x01, 0x00, 0x01, 0x61, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x25, 0x00, 0x00, 0x00,
0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x72, 0x65,
0x65, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70,
0x2f, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4b,
0x69, 0x74, 0x31, 0x2f, 0x41, 0x75, 0x74, 0x68,
0x6f, 0x72, 0x69, 0x74, 0x79, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x1a, 0x00, 0x00, 0x00,
0x6f, 0x72, 0x67, 0x2e, 0x66, 0x72, 0x65, 0x65,
0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x2e,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4b, 0x69,
0x74, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x24, 0x00, 0x00, 0x00,
0x6f, 0x72, 0x67, 0x2e, 0x66, 0x72, 0x65, 0x65,
0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x2e,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4b, 0x69,
0x74, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f,
0x72, 0x69, 0x74, 0x79, 0x00, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x12, 0x00, 0x00, 0x00,
0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x75, 0x74,
0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x10, 0x28, 0x73, 0x61,
0x7b, 0x73, 0x76, 0x7d, 0x29, 0x73, 0x61, 0x7b,
0x73, 0x73, 0x7d, 0x75, 0x73, 0x00, 0x00, 0x00,
0x0f, 0x00, 0x00, 0x00, 0x73, 0x79, 0x73, 0x74,
0x65, 0x6d, 0x2d, 0x62, 0x75, 0x73, 0x2d, 0x6e,
0x61, 0x6d, 0x65, 0x00, 0x18, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x6e, 0x61, 0x6d, 0x65,
0x00, 0x01, 0x73, 0x00, 0x07, 0x00, 0x00, 0x00,
0x3a, 0x31, 0x2e, 0x33, 0x33, 0x30, 0x37, 0x00,
0x1e, 0x00, 0x00, 0x00, 0x6f, 0x72, 0x67, 0x2e,
0x66, 0x72, 0x65, 0x65, 0x64, 0x65, 0x73, 0x6b,
0x74, 0x6f, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78,
0x65, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00,
};
static const struct message_data message_data_complex_3 = {
.type = "method_call",
.path = "/org/freedesktop/PolicyKit1/Authority",
.interface = "org.freedesktop.PolicyKit1.Authority",
.member = "CheckAuthorization",
.destination = "org.freedesktop.PolicyKit1",
.signature = "(sa{sv})sa{ss}us",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 0,
.binary = message_binary_complex_3,
.binary_len = 305,
};
static const unsigned char message_binary_complex_4[] = {
0x6c, 0x02, 0x01, 0x01, 0x31, 0x00, 0x00, 0x00,
0x45, 0x2e, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x09, 0x28, 0x62, 0x62,
0x61, 0x7b, 0x73, 0x73, 0x7d, 0x29, 0x00, 0x00,
0x05, 0x01, 0x75, 0x00, 0x02, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x07, 0x00, 0x00, 0x00,
0x3a, 0x31, 0x2e, 0x33, 0x33, 0x30, 0x37, 0x00,
0x07, 0x01, 0x73, 0x00, 0x04, 0x00, 0x00, 0x00,
0x3a, 0x31, 0x2e, 0x38, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x70, 0x6f, 0x6c, 0x6b,
0x69, 0x74, 0x2e, 0x64, 0x69, 0x73, 0x6d, 0x69,
0x73, 0x73, 0x65, 0x64, 0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x74, 0x72, 0x75, 0x65,
0x00,
};
static const struct message_data message_data_complex_4 = {
.binary = message_binary_complex_4,
.binary_len = 121,
};
static const unsigned char message_binary_complex_5[] = {
0x6c, 0x02, 0x01, 0x01, 0x10, 0x00, 0x00, 0x00,
0x64, 0x2e, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x09, 0x28, 0x62, 0x62,
0x61, 0x7b, 0x73, 0x73, 0x7d, 0x29, 0x00, 0x00,
0x05, 0x01, 0x75, 0x00, 0x02, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x07, 0x00, 0x00, 0x00,
0x3a, 0x31, 0x2e, 0x33, 0x33, 0x30, 0x39, 0x00,
0x07, 0x01, 0x73, 0x00, 0x04, 0x00, 0x00, 0x00,
0x3a, 0x31, 0x2e, 0x38, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
static const struct message_data message_data_complex_5 = {
.binary = message_binary_complex_5,
.binary_len = 88,
};
static void do_debug(const char *str, void *user_data)
{
const char *prefix = user_data;
l_info("%s%s", prefix, str);
}
static struct l_dbus_message *check_message(const struct message_data *msg_data)
{
struct l_dbus_message *msg;
msg = dbus_message_from_blob(msg_data->binary, msg_data->binary_len,
msg_data->fds, msg_data->unix_fds);
assert(msg);
if (do_print)
l_util_hexdump(false, msg_data->binary, msg_data->binary_len,
do_debug, "[MSG] ");
if (msg_data->sender) {
const char *sender;
sender = l_dbus_message_get_sender(msg);
assert(sender);
assert(!strcmp(msg_data->sender, sender));
if (do_print)
l_info("sender=%s", sender);
}
if (msg_data->destination) {
const char *destination;
destination = l_dbus_message_get_destination(msg);
assert(destination);
assert(!strcmp(msg_data->destination, destination));
if (do_print)
l_info("destination=%s", destination);
}
return msg;
}
static struct l_dbus_message *build_message(const struct message_data *msg_data)
{
struct l_dbus_message *msg;
msg = _dbus_message_new_method_call(1, msg_data->destination,
msg_data->path, msg_data->interface, msg_data->member);
assert(msg);
return msg;
}
static void compare_message(struct l_dbus_message *msg,
const struct message_data *msg_data)
{
bool result;
/* Shut valgrind up */
_dbus_message_set_serial(msg, 0);
if (do_print) {
void *blob;
void *header, *body;
size_t header_size, body_size;
header = _dbus_message_get_header(msg, &header_size);
body = _dbus_message_get_body(msg, &body_size);
blob = l_malloc(header_size + body_size);
memcpy(blob, header, header_size);
memcpy(blob + header_size, body, body_size);
l_util_hexdump(true, blob, header_size + body_size,
do_debug, "[MSG] ");
l_free(blob);
l_util_hexdump(true, msg_data->binary, msg_data->binary_len,
do_debug, "[MSG] ");
}
result = dbus_message_compare(msg, msg_data->binary,
msg_data->binary_len);
assert(result);
l_dbus_message_unref(msg);
}
static void parse_basic_1(const void *data)
{
struct l_dbus_message *msg = check_message(data);
const char *str;
bool result;
result = l_dbus_message_get_arguments(msg, "s", &str);
assert(result);
assert(!strcmp(str, "Linus Torvalds"));
l_dbus_message_unref(msg);
}
static void build_basic_1(const void *data)
{
struct l_dbus_message *msg = build_message(data);
const char *str = "Linus Torvalds";
l_dbus_message_set_arguments(msg, "s", str);
compare_message(msg, data);
}
static void parse_basic_2(const void *data)
{
struct l_dbus_message *msg = check_message(data);
const char *str1, *str2;
bool result;
result = l_dbus_message_get_arguments(msg, "ss", &str1, &str2);
assert(result);
assert(!strcmp(str1, "Linus"));
assert(!strcmp(str2, "Torvalds"));
l_dbus_message_unref(msg);
}
static void build_basic_2(const void *data)
{
struct l_dbus_message *msg = build_message(data);
const char *str1 = "Linus";
const char *str2 = "Torvalds";
l_dbus_message_set_arguments(msg, "ss", str1, str2);
compare_message(msg, data);
}
static void parse_basic_3(const void *data)
{
struct l_dbus_message *msg = check_message(data);
const char *str;
bool result, val;
result = l_dbus_message_get_arguments(msg, "sb", &str, &val);
assert(result);
assert(!strcmp(str, "Linus Torvalds"));
assert(val);
l_dbus_message_unref(msg);
}
static void build_basic_3(const void *data)
{
struct l_dbus_message *msg = build_message(data);
const char *str = "Linus Torvalds";
l_dbus_message_set_arguments(msg, "sb", str, true);
compare_message(msg, data);
}
static void parse_basic_4(const void *data)
{
struct l_dbus_message *msg = check_message(data);
uint8_t val;
bool result;
result = l_dbus_message_get_arguments(msg, "y", &val);
assert(result);
assert(val == 23);
l_dbus_message_unref(msg);
}
static void build_basic_4(const void *data)
{
struct l_dbus_message *msg = build_message(data);
uint8_t val = 23;
l_dbus_message_set_arguments(msg, "y", val);
compare_message(msg, data);
}
static void parse_basic_5(const void *data)
{
struct l_dbus_message *msg = check_message(data);
uint16_t val;
bool result;
result = l_dbus_message_get_arguments(msg, "q", &val);
assert(result);
assert(val == 42);
l_dbus_message_unref(msg);
}
static void build_basic_5(const void *data)
{
struct l_dbus_message *msg = build_message(data);
uint16_t val = 42;
l_dbus_message_set_arguments(msg, "q", val);
compare_message(msg, data);
}
static void parse_basic_6(const void *data)
{
struct l_dbus_message *msg = check_message(data);
uint32_t val;
bool result;
result = l_dbus_message_get_arguments(msg, "u", &val);
assert(result);
assert(val == 4711);
l_dbus_message_unref(msg);
}
static void build_basic_6(const void *data)
{
struct l_dbus_message *msg = build_message(data);
l_dbus_message_set_arguments(msg, "u", 4711);
compare_message(msg, data);
}
static void parse_basic_7(const void *data)
{
struct l_dbus_message *msg = check_message(data);
uint64_t val;
bool result;
result = l_dbus_message_get_arguments(msg, "t", &val);
assert(result);
assert(val == 10000);
l_dbus_message_unref(msg);
}
static void build_basic_7(const void *data)
{
struct l_dbus_message *msg = build_message(data);
l_dbus_message_set_arguments(msg, "t", (uint64_t) 10000);
compare_message(msg, data);
}
static void parse_basic_8(const void *data)
{
struct l_dbus_message *msg = check_message(data);
int16_t val;
bool result;
result = l_dbus_message_get_arguments(msg, "n", &val);
assert(result);
assert(val == -42);
l_dbus_message_unref(msg);
}
static void build_basic_8(const void *data)
{
struct l_dbus_message *msg = build_message(data);
int16_t val = -42;
l_dbus_message_set_arguments(msg, "n", val);
compare_message(msg, data);
}
static void parse_basic_9(const void *data)
{
struct l_dbus_message *msg = check_message(data);
int32_t val;
bool result;
result = l_dbus_message_get_arguments(msg, "i", &val);
assert(result);
assert(val == -4711);
l_dbus_message_unref(msg);
}
static void build_basic_9(const void *data)
{
struct l_dbus_message *msg = build_message(data);
int32_t val = -4711;
l_dbus_message_set_arguments(msg, "i", val);
compare_message(msg, data);
}
static void parse_basic_10(const void *data)
{
struct l_dbus_message *msg = check_message(data);
int64_t val;
bool result;
result = l_dbus_message_get_arguments(msg, "x", &val);
assert(result);
assert(val == -10000);
l_dbus_message_unref(msg);
}
static void build_basic_10(const void *data)
{
struct l_dbus_message *msg = build_message(data);
int64_t val = -10000;
l_dbus_message_set_arguments(msg, "x", val);
compare_message(msg, data);
}
static void parse_basic_11(const void *data)
{
struct l_dbus_message *msg = check_message(data);
double val;
bool result;
result = l_dbus_message_get_arguments(msg, "d", &val);
assert(result);
assert(val == M_PI);
l_dbus_message_unref(msg);
}
static void build_basic_11(const void *data)
{
struct l_dbus_message *msg = build_message(data);
double val = M_PI;
l_dbus_message_set_arguments(msg, "d", val);
compare_message(msg, data);
}
static void parse_struct_1(const void *data)
{
struct l_dbus_message *msg = check_message(data);
const char *str1, *str2;
bool result;
result = l_dbus_message_get_arguments(msg, "(ss)", &str1, &str2);
assert(result);
assert(!strcmp(str1, "Linus"));
assert(!strcmp(str2, "Torvalds"));
l_dbus_message_unref(msg);
}
static void build_struct_1(const void *data)
{
struct l_dbus_message *msg = build_message(data);
const char *str1 = "Linus";
const char *str2 = "Torvalds";
bool result;
result = l_dbus_message_set_arguments(msg, "(ss)", str1, str2);
assert(result);
compare_message(msg, data);
}
static void parse_struct_2(const void *data)
{
struct l_dbus_message *msg = check_message(data);
const char *str, *str1, *str2;
bool result;
result = l_dbus_message_get_arguments(msg, "(s(ss))",
&str, &str1, &str2);
assert(result);
assert(!strcmp(str, "Linus Torvalds"));
assert(!strcmp(str1, "Linus"));
assert(!strcmp(str2, "Torvalds"));
l_dbus_message_unref(msg);
}
static void build_struct_2(const void *data)
{
struct l_dbus_message *msg = build_message(data);
const char *str = "Linus Torvalds";
const char *str1 = "Linus";
const char *str2 = "Torvalds";
bool result;
result = l_dbus_message_set_arguments(msg, "(s(ss))",
str, str1, str2);
assert(result);
compare_message(msg, data);
}
static void parse_struct_3(const void *data)
{
struct l_dbus_message *msg = check_message(data);
int num[32] = { 0 };
bool result;
int i;
result = l_dbus_message_get_arguments(msg, MESSAGE_SIGNATURE_STRUCT_3,
&num[0], &num[1], &num[2], &num[3],
&num[4], &num[5], &num[6], &num[7],
&num[8], &num[9], &num[10], &num[11],
&num[12], &num[13], &num[14], &num[15],
&num[16], &num[17], &num[18], &num[19],
&num[20], &num[21], &num[22], &num[23],
&num[24], &num[25], &num[26], &num[27],
&num[28], &num[29], &num[30], &num[31]);
assert(result);
for (i = 0; i < 32; i++) {
assert(i == num[i]);
}
l_dbus_message_unref(msg);
}
static void build_struct_3(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, MESSAGE_SIGNATURE_STRUCT_3,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31);
assert(result);
compare_message(msg, data);
}
static void build_struct_4(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, MESSAGE_SIGNATURE_STRUCT_4,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32);
assert(!result);
l_dbus_message_unref(msg);
}
static void check_array_1(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter iter;
const char *str;
bool result;
result = l_dbus_message_get_arguments(msg, "as", &iter);
assert(result);
result = l_dbus_message_iter_next_entry(&iter, &str);
assert(result);
assert(!strcmp(str, "Linus"));
result = l_dbus_message_iter_next_entry(&iter, &str);
assert(result);
assert(!strcmp(str, "Torvalds"));
result = l_dbus_message_iter_next_entry(&iter, &str);
assert(!result);
l_dbus_message_unref(msg);
}
static void build_array_1(const void *data)
{
struct l_dbus_message *msg = build_message(data);
const char *str1 = "Linus";
const char *str2 = "Torvalds";
bool result;
result = l_dbus_message_set_arguments(msg, "as", 2, str1, str2);
assert(result);
compare_message(msg, data);
}
static void check_array_2(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter iter;
bool result, val;
result = l_dbus_message_get_arguments(msg, "ab", &iter);
assert(result);
result = l_dbus_message_iter_next_entry(&iter, &val);
assert(result);
assert(val);
result = l_dbus_message_iter_next_entry(&iter, &val);
assert(result);
assert(val);
result = l_dbus_message_iter_next_entry(&iter, &val);
assert(result);
assert(!val);
result = l_dbus_message_iter_next_entry(&iter, &val);
assert(!result);
l_dbus_message_unref(msg);
}
static void check_fixed_array_2(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter iter;
const uint32_t *array = NULL;
uint32_t n_elem;
bool result;
result = l_dbus_message_get_arguments(msg, "ab", &iter);
assert(result);
/* Bools are represented by 4 bytes in dbus, so use a uint32_t array */
result = l_dbus_message_iter_get_fixed_array(&iter, &array, &n_elem);
assert(result);
assert(array);
assert(n_elem == 3);
assert(array[0] == 0x1);
assert(array[1] == 0x1);
assert(array[2] == 0x0);
l_dbus_message_unref(msg);
}
static void build_array_2(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, "ab", 3, true, true, false);
assert(result);
compare_message(msg, data);
}
static void check_array_3(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter array, iter;
const char *str;
bool result;
result = l_dbus_message_get_arguments(msg, "aas", &array);
assert(result);
/* Top-level array's first element */
result = l_dbus_message_iter_next_entry(&array, &iter);
assert(result);
result = l_dbus_message_iter_next_entry(&iter, &str);
assert(result);
assert(!strcmp(str, "Linus Torvalds"));
result = l_dbus_message_iter_next_entry(&iter, &str);
assert(!result);
/* Top-level array's second element */
result = l_dbus_message_iter_next_entry(&array, &iter);
assert(result);
result = l_dbus_message_iter_next_entry(&iter, &str);
assert(result);
assert(!strcmp(str, "Linus"));
result = l_dbus_message_iter_next_entry(&iter, &str);
assert(result);
assert(!strcmp(str, "Torvalds"));
result = l_dbus_message_iter_next_entry(&iter, &str);
assert(!result);
/* Top-level array's third element */
result = l_dbus_message_iter_next_entry(&array, &iter);
assert(result);
result = l_dbus_message_iter_next_entry(&iter, &str);
assert(!result);
/* Top-level array's end element */
result = l_dbus_message_iter_next_entry(&array, &iter);
assert(!result);
l_dbus_message_unref(msg);
}
static void build_array_3(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, "aas", 3,
1, "Linus Torvalds",
2, "Linus", "Torvalds",
0);
assert(result);
compare_message(msg, data);
}
static void check_array_4(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter array;
const char *str1, *str2;
bool result;
result = l_dbus_message_get_arguments(msg, "a(ss)", &array);
assert(result);
result = l_dbus_message_iter_next_entry(&array, &str1, &str2);
assert(result);
assert(!strcmp(str1, "Linus"));
assert(!strcmp(str2, "Torvalds"));
result = l_dbus_message_iter_next_entry(&array, &str1, &str2);
assert(result);
assert(!strcmp(str1, "Marcel"));
assert(!strcmp(str2, "Holtmann"));
result = l_dbus_message_iter_next_entry(&array, &str1, &str2);
assert(!result);
l_dbus_message_unref(msg);
}
static void build_array_4(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, "a(ss)", 2,
"Linus", "Torvalds",
"Marcel", "Holtmann");
assert(result);
compare_message(msg, data);
}
static void check_array_5(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter array1, array2;
const char *str;
bool result;
result = l_dbus_message_get_arguments(msg, "asas", &array1, &array2);
assert(result);
result = l_dbus_message_iter_next_entry(&array1, &str);
assert(result);
assert(!strcmp(str, "Linus"));
result = l_dbus_message_iter_next_entry(&array1, &str);
assert(result);
assert(!strcmp(str, "Torvalds"));
result = l_dbus_message_iter_next_entry(&array1, &str);
assert(!result);
result = l_dbus_message_iter_next_entry(&array2, &str);
assert(result);
assert(!strcmp(str, "Marcel"));
result = l_dbus_message_iter_next_entry(&array2, &str);
assert(result);
assert(!strcmp(str, "Holtmann"));
result = l_dbus_message_iter_next_entry(&array2, &str);
assert(!result);
l_dbus_message_unref(msg);
}
static void build_array_5(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, "asas",
2, "Linus", "Torvalds",
2, "Marcel", "Holtmann");
assert(result);
compare_message(msg, data);
}
static void check_array_6(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter array, iter;
const char *str;
bool result, val;
result = l_dbus_message_get_arguments(msg, "av", &array);
assert(result);
result = l_dbus_message_iter_next_entry(&array, &iter);
assert(result);
result = l_dbus_message_iter_get_variant(&iter, "s", &str);
assert(result);
assert(!strcmp(str, "Linus Torvalds"));
result = l_dbus_message_iter_next_entry(&array, &iter);
assert(result);
result = l_dbus_message_iter_get_variant(&iter, "b", &val);
assert(result);
assert(val);
result = l_dbus_message_iter_next_entry(&array, &iter);
assert(!result);
l_dbus_message_unref(msg);
}
static void build_array_6(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, "av", 2,
"s", "Linus Torvalds",
"b", true);
assert(result);
compare_message(msg, data);
}
static void check_dict_1(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter dict, iter;
const char *str;
bool result;
result = l_dbus_message_get_arguments(msg, "a{sv}", &dict);
assert(result);
result = l_dbus_message_iter_next_entry(&dict, &str, &iter);
assert(!result);
l_dbus_message_unref(msg);
}
static void build_dict_1(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, "a{sv}", 0);
assert(result);
compare_message(msg, data);
}
static void check_dict_2(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter dict, iter;
const char *str;
bool result, val;
result = l_dbus_message_get_arguments(msg, "a{sv}", &dict);
assert(result);
result = l_dbus_message_iter_next_entry(&dict, &str, &iter);
assert(result);
assert(!strcmp(str, "Name"));
result = l_dbus_message_iter_get_variant(&iter, "s", &str);
assert(result);
assert(!strcmp(str, "Linus Torvalds"));
result = l_dbus_message_iter_next_entry(&dict, &str, &iter);
assert(result);
assert(!strcmp(str, "Developer"));
result = l_dbus_message_iter_get_variant(&iter, "b", &val);
assert(result);
assert(val);
result = l_dbus_message_iter_next_entry(&dict, &str, &iter);
assert(!result);
l_dbus_message_unref(msg);
}
static void build_dict_2(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, "a{sv}", 2,
"Name", "s", "Linus Torvalds",
"Developer", "b", true);
assert(result);
compare_message(msg, data);
}
static void check_dict_3(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter dict;
const char *str1, *str2;
bool result;
result = l_dbus_message_get_arguments(msg, "a{ss}", &dict);
assert(result);
result = l_dbus_message_iter_next_entry(&dict, &str1, &str2);
assert(result);
assert(!strcmp(str1, "Linus"));
assert(!strcmp(str2, "Torvalds"));
result = l_dbus_message_iter_next_entry(&dict, &str1, &str2);
assert(result);
assert(!strcmp(str1, "Marcel"));
assert(!strcmp(str2, "Holtmann"));
result = l_dbus_message_iter_next_entry(&dict, &str1, &str2);
assert(!result);
l_dbus_message_unref(msg);
}
static void build_dict_3(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, "a{ss}", 2,
"Linus", "Torvalds",
"Marcel", "Holtmann");
assert(result);
compare_message(msg, data);
}
static void check_variant_1(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter iter;
const char *str;
bool result;
result = l_dbus_message_get_arguments(msg, "v", &iter);
assert(result);
result = l_dbus_message_iter_get_variant(&iter, "s", &str);
assert(result);
assert(!strcmp(str, "Linus Torvalds"));
l_dbus_message_unref(msg);
}
static void build_variant_1(const void *data)
{
struct l_dbus_message *msg = build_message(data);
const char *str = "Linus Torvalds";
bool result;
result = l_dbus_message_set_arguments(msg, "v", "s", str);
assert(result);
compare_message(msg, data);
}
static void check_variant_2(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter iter, array;
const char *str;
bool result;
result = l_dbus_message_get_arguments(msg, "v", &iter);
assert(result);
result = l_dbus_message_iter_get_variant(&iter, "as", &array);
assert(result);
result = l_dbus_message_iter_next_entry(&array, &str);
assert(result);
assert(!strcmp(str, "Linus"));
result = l_dbus_message_iter_next_entry(&array, &str);
assert(result);
assert(!strcmp(str, "Torvalds"));
result = l_dbus_message_iter_next_entry(&array, &str);
assert(!result);
l_dbus_message_unref(msg);
}
static void build_variant_2(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, "v", "as", 2,
"Linus", "Torvalds");
assert(result);
compare_message(msg, data);
}
static void check_variant_3(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter iter;
const char *str1, *str2;
bool result, val;
result = l_dbus_message_get_arguments(msg, "v", &iter);
assert(result);
result = l_dbus_message_iter_get_variant(&iter, "(ssb)",
&str1, &str2, &val);
assert(result);
assert(!strcmp(str1, "Linus"));
assert(!strcmp(str2, "Torvalds"));
assert(val);
l_dbus_message_unref(msg);
}
static void build_variant_3(const void *data)
{
struct l_dbus_message *msg = build_message(data);
const char *str1 = "Linus";
const char *str2 = "Torvalds";
bool result;
result = l_dbus_message_set_arguments(msg, "v", "(ssb)",
str1, str2, true);
assert(result);
compare_message(msg, data);
}
static void check_variant_4(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter entry, iter;
const char *str;
bool result;
result = l_dbus_message_get_arguments(msg, "v", &entry);
assert(result);
result = l_dbus_message_iter_get_variant(&entry, "v", &iter);
assert(result);
result = l_dbus_message_iter_get_variant(&iter, "s", &str);
assert(result);
assert(!strcmp(str, "Linus Torvalds"));
l_dbus_message_unref(msg);
}
static void build_variant_4(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, "v", "v", "s",
"Linus Torvalds");
assert(result);
compare_message(msg, data);
}
static void check_variant_5(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter entry, iter;
const char *str;
bool result, val;
result = l_dbus_message_get_arguments(msg, "v", &entry);
assert(result);
result = l_dbus_message_iter_get_variant(&entry, "(sv)", &str, &iter);
assert(result);
assert(!strcmp(str, "Linus Torvalds"));
result = l_dbus_message_iter_get_variant(&iter, "b", &val);
assert(result);
assert(val);
l_dbus_message_unref(msg);
}
static void build_variant_5(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, "v", "(sv)",
"Linus Torvalds",
"b", true);
assert(result);
compare_message(msg, data);
}
static void check_complex_1(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter dict, iter;
const char *path, *str;
bool result, val;
result = l_dbus_message_get_arguments(msg, "oa{sv}", &path, &dict);
assert(result);
assert(!strcmp(path, "/com/example/object"));
result = l_dbus_message_iter_next_entry(&dict, &str, &iter);
assert(result);
assert(!strcmp(str, "Name"));
result = l_dbus_message_iter_get_variant(&iter, "s", &str);
assert(result);
assert(!strcmp(str, "Linus Torvalds"));
result = l_dbus_message_iter_next_entry(&dict, &str, &iter);
assert(result);
assert(!strcmp(str, "Developer"));
result = l_dbus_message_iter_get_variant(&iter, "b", &val);
assert(result);
assert(val);
result = l_dbus_message_iter_next_entry(&dict, &str, &iter);
assert(!result);
l_dbus_message_unref(msg);
}
static void build_complex_1(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, "oa{sv}",
"/com/example/object", 2,
"Name", "s", "Linus Torvalds",
"Developer", "b", true);
assert(result);
compare_message(msg, data);
}
static void check_complex_2(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter array, dict, iter;
const char *path, *str;
bool result;
result = l_dbus_message_get_arguments(msg, "a(oa{sv})", &array);
assert(result);
/* First object path + properties */
result = l_dbus_message_iter_next_entry(&array, &path, &dict);
assert(result);
assert(!strcmp(path, "/com/example/object1"));
result = l_dbus_message_iter_next_entry(&dict, &str, &iter);
assert(result);
assert(!strcmp(str, "Name"));
result = l_dbus_message_iter_get_variant(&iter, "s", &str);
assert(result);
assert(!strcmp(str, "Linus Torvalds"));
result = l_dbus_message_iter_next_entry(&dict, &str, &iter);
assert(!result);
/* Second object path + properties */
result = l_dbus_message_iter_next_entry(&array, &path, &dict);
assert(result);
assert(!strcmp(path, "/com/example/object2"));
result = l_dbus_message_iter_next_entry(&dict, &str, &iter);
assert(result);
assert(!strcmp(str, "Name"));
result = l_dbus_message_iter_get_variant(&iter, "s", &str);
assert(result);
assert(!strcmp(str, "Marcel Holtmann"));
result = l_dbus_message_iter_next_entry(&dict, &str, &iter);
assert(!result);
/* End element */
result = l_dbus_message_iter_next_entry(&array, &path, &dict);
assert(!result);
l_dbus_message_unref(msg);
}
static void build_complex_2(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, "a(oa{sv})", 2,
"/com/example/object1", 1,
"Name", "s", "Linus Torvalds",
"/com/example/object2", 1,
"Name", "s", "Marcel Holtmann");
assert(result);
compare_message(msg, data);
}
static void check_complex_3(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter dict1, dict2, iter;
const char *str1, *str2, *str3;
uint32_t val;
bool result;
result = l_dbus_message_get_arguments(msg, "(sa{sv})sa{ss}us",
&str1, &dict1, &str2, &dict2, &val, &str3);
assert(result);
assert(!strcmp(str1, "system-bus-name"));
assert(!strcmp(str2, "org.freedesktop.policykit.exec"));
assert(val == 1);
assert(!strcmp(str3, ""));
result = l_dbus_message_iter_next_entry(&dict1, &str1, &iter);
assert(result);
assert(!strcmp(str1, "name"));
result = l_dbus_message_iter_get_variant(&iter, "s", &str2);
assert(result);
assert(!strcmp(str2, ":1.3307"));
result = l_dbus_message_iter_next_entry(&dict1, &str1, &iter);
assert(!result);
result = l_dbus_message_iter_next_entry(&dict2, &str1, &str2);
assert(!result);
l_dbus_message_unref(msg);
}
static void build_complex_3(const void *data)
{
struct l_dbus_message *msg = build_message(data);
bool result;
result = l_dbus_message_set_arguments(msg, "(sa{sv})sa{ss}us",
"system-bus-name", 1,
"name", "s", ":1.3307",
"org.freedesktop.policykit.exec", 0,
1, "");
assert(result);
compare_message(msg, data);
}
static void builder_complex_3(const void *data)
{
struct l_dbus_message *msg = build_message(data);
struct l_dbus_message_builder *builder;
uint32_t u = 1;
builder = l_dbus_message_builder_new(msg);
assert(builder);
assert(l_dbus_message_builder_enter_struct(builder, "sa{sv}"));
assert(l_dbus_message_builder_append_basic(builder, 's',
"system-bus-name"));
assert(l_dbus_message_builder_enter_array(builder, "{sv}"));
assert(l_dbus_message_builder_enter_dict(builder, "sv"));
assert(l_dbus_message_builder_append_basic(builder, 's', "name"));
assert(l_dbus_message_builder_enter_variant(builder, "s"));
assert(l_dbus_message_builder_append_basic(builder, 's', ":1.3307"));
assert(l_dbus_message_builder_leave_variant(builder));
assert(l_dbus_message_builder_leave_dict(builder));
assert(l_dbus_message_builder_leave_array(builder));
assert(l_dbus_message_builder_leave_struct(builder));
assert(l_dbus_message_builder_append_basic(builder, 's',
"org.freedesktop.policykit.exec"));
assert(l_dbus_message_builder_enter_array(builder, "{ss}"));
assert(l_dbus_message_builder_leave_array(builder));
assert(l_dbus_message_builder_append_basic(builder, 'u', &u));
assert(l_dbus_message_builder_append_basic(builder, 's', ""));
assert(l_dbus_message_builder_finalize(builder));
l_dbus_message_builder_destroy(builder);
compare_message(msg, data);
}
static void check_complex_4(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter dict;
const char *str1, *str2;
bool result, val1, val2;
result = l_dbus_message_get_arguments(msg, "(bba{ss})",
&val1, &val2, &dict);
assert(result);
assert(!val1);
assert(!val2);
result = l_dbus_message_iter_next_entry(&dict, &str1, &str2);
assert(result);
assert(!strcmp(str1, "polkit.dismissed"));
assert(!strcmp(str2, "true"));
result = l_dbus_message_iter_next_entry(&dict, &str1, &str2);
assert(!result);
l_dbus_message_unref(msg);
}
static void check_complex_5(const void *data)
{
struct l_dbus_message *msg = check_message(data);
struct l_dbus_message_iter dict;
const char *str1, *str2;
bool result, val1, val2;
result = l_dbus_message_get_arguments(msg, "(bba{ss})",
&val1, &val2, &dict);
assert(result);
assert(val1);
assert(!val2);
result = l_dbus_message_iter_next_entry(&dict, &str1, &str2);
assert(!result);
l_dbus_message_unref(msg);
}
static void builder_rewind(const void *data)
{
struct l_dbus_message *msg = build_message(data);
struct l_dbus_message_builder *builder;
bool b = true;
builder = l_dbus_message_builder_new(msg);
assert(builder);
assert(l_dbus_message_builder_append_basic(builder, 'o',
"/com/example/object"));
assert(l_dbus_message_builder_enter_array(builder, "{sv}"));
assert(_dbus_message_builder_mark(builder));
assert(l_dbus_message_builder_enter_dict(builder, "sv"));
assert(l_dbus_message_builder_append_basic(builder, 's', "Name"));
assert(l_dbus_message_builder_enter_variant(builder, "s"));
assert(l_dbus_message_builder_append_basic(builder, 's',
"Invalid"));
assert(l_dbus_message_builder_leave_variant(builder));
assert(l_dbus_message_builder_leave_dict(builder));
assert(_dbus_message_builder_rewind(builder));
assert(l_dbus_message_builder_enter_dict(builder, "sv"));
assert(l_dbus_message_builder_append_basic(builder, 's', "Name"));
assert(l_dbus_message_builder_enter_variant(builder, "s"));
assert(l_dbus_message_builder_append_basic(builder, 's',
"Linus Torvalds"));
assert(l_dbus_message_builder_leave_variant(builder));
assert(l_dbus_message_builder_leave_dict(builder));
assert(l_dbus_message_builder_enter_dict(builder, "sv"));
assert(l_dbus_message_builder_append_basic(builder, 's', "Developer"));
assert(l_dbus_message_builder_enter_variant(builder, "b"));
assert(l_dbus_message_builder_append_basic(builder, 'b', &b));
assert(l_dbus_message_builder_leave_variant(builder));
assert(l_dbus_message_builder_leave_dict(builder));
assert(l_dbus_message_builder_leave_array(builder));
assert(l_dbus_message_builder_finalize(builder));
l_dbus_message_builder_destroy(builder);
compare_message(msg, data);
}
static int count_fds(void)
{
int fd;
int count = 0;
int flags;
for (fd = 0; fd < FD_SETSIZE; fd++) {
flags = fcntl(fd, F_GETFL);
if (flags < 0) /* ignore any files we can't operate on */
continue;
/*
* Only count files that are read-only or write-only. This is
* to work around the issue that fakeroot opens a TCP socket
* in RDWR mode in a separate thread
*
* Note: This means that files used for file-descriptor passing
* tests should be opened RDONLY or WRONLY
*/
if (flags & O_RDWR)
continue;
count++;
}
return count;
}
static void compare_files(int a, int b)
{
struct stat sa, sb;
assert(fstat(a, &sa) == 0);
assert(fstat(b, &sb) == 0);
assert(sa.st_dev == sb.st_dev);
assert(sa.st_ino == sb.st_ino);
assert(sa.st_rdev == sb.st_rdev);
}
static const unsigned char message_binary_basic_h[] = {
0x6c, 0x01, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
0x01, 0x01, 0x6f, 0x00, 0x13, 0x00, 0x00, 0x00,
0x2f, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x01, 0x73, 0x00, 0x06, 0x00, 0x00, 0x00,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00,
0x02, 0x01, 0x73, 0x00, 0x15, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
0x06, 0x01, 0x73, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
0x08, 0x01, 0x67, 0x00, 0x01, 0x68, 0x00, 0x00,
0x09, 0x01, 0x75, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
};
static const struct message_data message_data_basic_h = {
.type = "method_call",
.path = "/com/example/object",
.interface = "com.example.interface",
.member = "method",
.destination = "com.example",
.signature = "h",
.serial = 0,
.reply_serial = 0,
.no_reply = 0,
.auto_start = 1,
.unix_fds = 1,
.binary = message_binary_basic_h,
.binary_len = sizeof(message_binary_basic_h),
};
static void message_fds_parse(const void *data)
{
struct message_data message_data = message_data_basic_h;
struct l_dbus_message *msg;
int fd0, fd1;
int open_fds;
bool result;
open_fds = count_fds();
fd0 = open("/dev/random", O_RDONLY);
assert(fd0 != -1);
message_data.fds = &fd0;
msg = check_message(&message_data);
result = l_dbus_message_get_arguments(msg, "h", &fd1);
assert(result);
assert(fd1 != -1 && fd0 != fd1);
compare_files(fd0, fd1);
assert(count_fds() != open_fds);
close(fd1);
assert(count_fds() != open_fds);
l_dbus_message_unref(msg);
assert(count_fds() == open_fds);
}
static void message_fds_build(const void *data)
{
struct message_data message_data = message_data_basic_h;
struct l_dbus_message *msg;
int fd;
int open_fds;
open_fds = count_fds();
fd = open("/dev/random", O_RDONLY);
assert(fd != -1);
msg = build_message(&message_data);
l_dbus_message_set_arguments(msg, "h", fd);
close(fd);
assert(count_fds() != open_fds);
compare_message(msg, &message_data);
assert(count_fds() == open_fds);
}
int main(int argc, char *argv[])
{
l_test_init(&argc, &argv);
l_test_add("Basic 1 (parse)", parse_basic_1, &message_data_basic_1);
l_test_add("Basic 1 (build)", build_basic_1, &message_data_basic_1);
l_test_add("Basic 2 (parse)", parse_basic_2, &message_data_basic_2);
l_test_add("Basic 3 (build)", build_basic_2, &message_data_basic_2);
l_test_add("Basic 3 (parse)", parse_basic_3, &message_data_basic_3);
l_test_add("Basic 3 (build)", build_basic_3, &message_data_basic_3);
l_test_add("Basic 4 (parse)", parse_basic_4, &message_data_basic_4);
l_test_add("Basic 4 (build)", build_basic_4, &message_data_basic_4);
l_test_add("Basic 5 (parse)", parse_basic_5, &message_data_basic_5);
l_test_add("Basic 5 (build)", build_basic_5, &message_data_basic_5);
l_test_add("Basic 6 (parse)", parse_basic_6, &message_data_basic_6);
l_test_add("Basic 6 (build)", build_basic_6, &message_data_basic_6);
l_test_add("Basic 7 (parse)", parse_basic_7, &message_data_basic_7);
l_test_add("Basic 7 (build)", build_basic_7, &message_data_basic_7);
l_test_add("Basic 8 (parse)", parse_basic_8, &message_data_basic_8);
l_test_add("Basic 8 (build)", build_basic_8, &message_data_basic_8);
l_test_add("Basic 9 (parse)", parse_basic_9, &message_data_basic_9);
l_test_add("Basic 9 (build)", build_basic_9, &message_data_basic_9);
l_test_add("Basic 10 (parse)", parse_basic_10, &message_data_basic_10);
l_test_add("Basic 10 (build)", build_basic_10, &message_data_basic_10);
l_test_add("Basic 11 (parse)", parse_basic_11, &message_data_basic_11);
l_test_add("Basic 11 (build)", build_basic_11, &message_data_basic_11);
l_test_add("Struct 1 (parse)", parse_struct_1, &message_data_struct_1);
l_test_add("Struct 1 (build)", build_struct_1, &message_data_struct_1);
l_test_add("Struct 2 (parse)", parse_struct_2, &message_data_struct_2);
l_test_add("Struct 2 (build)", build_struct_2, &message_data_struct_2);
l_test_add("Struct 3 (parse)", parse_struct_3, &message_data_struct_3);
l_test_add("Struct 3 (build)", build_struct_3, &message_data_struct_3);
l_test_add("Struct 4 (build)", build_struct_4, &message_data_struct_4);
l_test_add("Array 1 (parse)", check_array_1, &message_data_array_1);
l_test_add("Array 1 (build)", build_array_1, &message_data_array_1);
l_test_add("Array 2 (parse)", check_array_2, &message_data_array_2);
l_test_add("Array 2 (checkfixed)", check_fixed_array_2,
&message_data_array_2);
l_test_add("Array 2 (build)", build_array_2, &message_data_array_2);
l_test_add("Array 3 (parse)", check_array_3, &message_data_array_3);
l_test_add("Array 3 (build)", build_array_3, &message_data_array_3);
l_test_add("Array 4 (parse)", check_array_4, &message_data_array_4);
l_test_add("Array 4 (build)", build_array_4, &message_data_array_4);
l_test_add("Array 5 (parse)", check_array_5, &message_data_array_5);
l_test_add("Array 5 (build)", build_array_5, &message_data_array_5);
l_test_add("Array 6 (parse)", check_array_6, &message_data_array_6);
l_test_add("Array 6 (build)", build_array_6, &message_data_array_6);
l_test_add("Dict 1 (parse)", check_dict_1, &message_data_dict_1);
l_test_add("Dict 1 (build)", build_dict_1, &message_data_dict_1);
l_test_add("Dict 2 (parse)", check_dict_2, &message_data_dict_2);
l_test_add("Dict 2 (build)", build_dict_2, &message_data_dict_2);
l_test_add("Dict 3 (parse)", check_dict_3, &message_data_dict_3);
l_test_add("Dict 3 (build)", build_dict_3, &message_data_dict_3);
l_test_add("Variant 1 (parse)", check_variant_1,
&message_data_variant_1);
l_test_add("Variant 1 (build)", build_variant_1,
&message_data_variant_1);
l_test_add("Variant 2 (parse)", check_variant_2,
&message_data_variant_2);
l_test_add("Variant 2 (build)", build_variant_2,
&message_data_variant_2);
l_test_add("Variant 3 (parse)", check_variant_3,
&message_data_variant_3);
l_test_add("Variant 3 (build)", build_variant_3,
&message_data_variant_3);
l_test_add("Variant 4 (parse)", check_variant_4,
&message_data_variant_4);
l_test_add("Variant 4 (build)", build_variant_4,
&message_data_variant_4);
l_test_add("Variant 5 (parse)", check_variant_5,
&message_data_variant_5);
l_test_add("Variant 5 (build)", build_variant_5,
&message_data_variant_5);
l_test_add("Complex 1 (parse)", check_complex_1,
&message_data_complex_1);
l_test_add("Complex 1 (build)", build_complex_1,
&message_data_complex_1);
l_test_add("Complex 2 (parse)", check_complex_2,
&message_data_complex_2);
l_test_add("Complex 2 (build)", build_complex_2,
&message_data_complex_2);
l_test_add("Complex 3 (parse)", check_complex_3,
&message_data_complex_3);
l_test_add("Complex 3 (build)", build_complex_3,
&message_data_complex_3);
l_test_add("Complex 4", check_complex_4, &message_data_complex_4);
l_test_add("Complex 5", check_complex_5, &message_data_complex_5);
l_test_add("Message Builder Complex 3", builder_complex_3,
&message_data_complex_3);
l_test_add("Message Builder Rewind Complex 1", builder_rewind,
&message_data_complex_1);
l_test_add("FDs (parse)", message_fds_parse, NULL);
l_test_add("FDs (build)", message_fds_build, NULL);
return l_test_run();
}