COMMON_SRC =\
src/libdbuspolicy1-private.h \
- src/libdbuspolicy1.c \
- src/kdbus.c \
+ src/libdbuspolicy1.cpp \
+ src/kdbus.cpp \
src/internal/internal.cpp \
src/internal/naive_policy_checker.cpp \
src/internal/policy.cpp \
[dev@lists.tizen.org],
[dbuspolicy],
[http://review.tizen.org])
-AC_CONFIG_SRCDIR([src/libdbuspolicy1.c])
+AC_CONFIG_SRCDIR([src/libdbuspolicy1.cpp])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([
check-news
GENERATE_MAN = NO
GENERATE_RTF = NO
CASE_SENSE_NAMES = NO
-INPUT = doc/main_page.dox src/internal/ src/dbuspolicy1 src/libdbuspolicy1.c
+INPUT = doc/main_page.dox src/internal/ src/dbuspolicy1 src/libdbuspolicy1.cpp
EXCLUDE = src/internal/xml_policy.hpp
JAVADOC_AUTOBRIEF = YES
EXTRACT_PRIVATE = YES
#include <fcntl.h>
#include <unistd.h>
#include <stdbool.h>
+#include <cassert>
#define CONNECTION_LABEL "libdbuspolicy1-kdbus"
struct kdbus_item* item;
size_t size = ALIGN8(sizeof(struct kdbus_cmd_hello)) + ALIGN8(offsetof(struct kdbus_item, data) + sizeof(CONNECTION_LABEL));
- cmd = calloc(1, size);
+ cmd = static_cast<struct kdbus_cmd_hello *>(calloc(1, size));
if (!cmd)
goto err;
cmd->size = size;
if (ioctl(conn->fd, KDBUS_CMD_HELLO, cmd) < 0)
goto err;
- if (MAP_FAILED == (conn->pool = mmap(NULL, KDBUS_POOL_SIZE, PROT_READ, MAP_SHARED, conn->fd, 0)))
+ conn->pool = static_cast<char *>(mmap(NULL, KDBUS_POOL_SIZE, PROT_READ, MAP_SHARED, conn->fd, 0));
+ if (MAP_FAILED == conn->pool)
goto err;
cmd_free.offset = cmd->offset;
void kdbus_shared_init_pool(kdbus_connection *conn, void *pool)
{
- conn->pool = pool;
+ conn->pool = static_cast<char*>(pool);
}
int kdbus_connect(kdbus_connection *conn,
uint8_t _buffer_[sizeof(struct kdbus_cmd_info) + offsetof(struct kdbus_item, data) + ALIGN8(MAX_DBUS_NAME_LEN+1)];
};
+static void set_item_info(struct kdbus_item *item, const char *str, __u64 str_length, __u64 type)
+{
+ item->size = (__u64)offsetof(struct kdbus_item, data) + str_length + (__u64)1;
+ item->type = type;
+ *(uint64_t*)ALIGNDN8((uintptr_t)item->str + str_length) = 0; /* trailing zero + padding */
+ memcpy(item->str, str, str_length+1);
+}
+
int kdbus_get_conn_info(kdbus_connection *conn,
const char *destination,
struct kdbus_cmd_param *info,
unsigned int l = strlen(destination);
cmd.cmd_info.size = sizeof(struct kdbus_cmd_info) + offsetof(struct kdbus_item, data) + ALIGN8(l+1);
cmd.cmd_info.id = 0;
- cmd.cmd_info.items->size = (__u64)offsetof(struct kdbus_item, data) + (__u64)l + (__u64)1;
- cmd.cmd_info.items->type = KDBUS_ITEM_NAME;
- *(uint64_t*)ALIGNDN8((uintptr_t)cmd.cmd_info.items->str + l) = 0; /* trailing zero + padding */
- memcpy(cmd.cmd_info.items->str, destination, l + 1);
+ set_item_info(cmd.cmd_info.items, destination, l, KDBUS_ITEM_NAME);
}
r = ioctl(conn->fd, KDBUS_CMD_CONN_INFO, &cmd.cmd_info);
if (r < 0) {
conn_info = (struct kdbus_info *) ((uint8_t *) conn->pool + cmd.cmd_info.offset);
items_end = (uintptr_t)conn_info + (unsigned)conn_info->size;
- _Static_assert((unsigned)KDBUS_ITEM_CREDS == KDBUS_ITEM_CREDS, "KDBUS_ITEM_CREDS not preserved when cast to unsigned");
- _Static_assert((unsigned)KDBUS_ITEM_SECLABEL == KDBUS_ITEM_SECLABEL, "KDBUS_ITEM_SECLABEL not preserved when cast to unsigned");
- _Static_assert((unsigned)KDBUS_ITEM_OWNED_NAME == KDBUS_ITEM_OWNED_NAME, "KDBUS_ITEM_OWNED_NAME not preserved when cast to unsigned");
+ static_assert((unsigned)KDBUS_ITEM_CREDS == KDBUS_ITEM_CREDS, "KDBUS_ITEM_CREDS not preserved when cast to unsigned");
+ static_assert((unsigned)KDBUS_ITEM_SECLABEL == KDBUS_ITEM_SECLABEL, "KDBUS_ITEM_SECLABEL not preserved when cast to unsigned");
+ static_assert((unsigned)KDBUS_ITEM_OWNED_NAME == KDBUS_ITEM_OWNED_NAME, "KDBUS_ITEM_OWNED_NAME not preserved when cast to unsigned");
info->names_num = 0;
for (item = conn_info->items; (uintptr_t)item < items_end; item = (typeof(item))ALIGN8((uintptr_t)item + (unsigned)item->size)) {
#include "internal/internal.h"
#include "libdbuspolicy1-private.h"
-#include <stdio.h>
-#include <stdlib.h>
+#include <cstdio>
+#include <cstdlib>
#include <unistd.h>
-#include <errno.h>
-#include <string.h>
+#include <cerrno>
+#include <cstring>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <grp.h>
#include <linux/limits.h>
#include <pthread.h>
-#include <stdbool.h>
+#include <assert.h>
#define KDBUS_PATH_PREFIX "/sys/fs/kdbus/"
#define KDBUS_SYSTEM_BUS_PATH "/sys/fs/kdbus/0-system/bus"
static bool init_once_db[2] = {false, false};
static bool init_once_conn[2] = {false, false};
-void __dbuspolicy1_change_creds(uid_t uid, gid_t gid, const char* label)
+extern "C" void __dbuspolicy1_change_creds(uid_t uid, gid_t gid, const char* label)
{
g_udesc.uid = uid;
g_udesc.gid = gid;
if (0 != strcmp(p + suffix_pos, user_suffix))
goto err;
- last_slash = memrchr(p, '/', suffix_pos);
+ last_slash = static_cast<char*>(memrchr(p, '/', suffix_pos));
if (last_slash == NULL)
goto err;
last_slash++;
return result;
}
-static struct kconn *init_shared_fd(BusType bus_type, int fd)
+static kconn *init_shared_fd(BusType bus_type, int fd)
{
- struct kconn *result = malloc(sizeof(*result));
+ kconn *result = static_cast<kconn*>(malloc(sizeof(*result)));
if (NULL == result) {
LOGE("Error: failed to allocate memory for policy configuration");
return NULL;
DBUSPOLICY1_EXPORT void* dbuspolicy1_init_shared(const char *bus_path, int fd)
{
- _Static_assert(SYSTEM_BUS == 0, "SYSTEM_BUS not 0");
- _Static_assert(SESSION_BUS == 1, "SESSION_BUS not 1");
+ static_assert(SYSTEM_BUS == 0, "SYSTEM_BUS not 0");
+ static_assert(SESSION_BUS == 1, "SESSION_BUS not 1");
BusType bus_type = SESSION_BUS;
uid_t bus_owner = 0;
DBUSPOLICY1_EXPORT void dbuspolicy1_init_set_pool(void *configuration, void *pool)
{
- kdbus_shared_init_pool(configuration, pool);
+ kdbus_shared_init_pool(static_cast<kdbus_connection *>(configuration), pool);
}
DBUSPOLICY1_EXPORT void dbuspolicy1_free(void* configuration)
(void)reply_serial;
(void)requested_reply;
- struct kconn *kconn = configuration;
+ struct kconn *kconn = static_cast<struct kconn*>(configuration);
int r;
struct kdbus_cmd_param info;
__internal_enter();
+ uid_t dest_uid_n = 0;
+ gid_t dest_gid_n = 0;
+
/* check can send */
/* if broadcasting, then pass - null destination */
if (destination && *destination) {
if (r <= 0)
goto end;
- uid_t dest_uid_n = 0;
- gid_t dest_gid_n = 0;
-
/* copy & free */
if (destination && *destination) {
dest_uid_n = info.uid_n;
(void)reply_serial;
(void)requested_reply;
- struct kconn *kconn = configuration;
+ struct kconn *kconn = static_cast<struct kconn *>(configuration);
int r;
struct kdbus_cmd_param info;
DBUSPOLICY1_EXPORT int dbuspolicy1_can_own(void* configuration, const char* const service)
{
int r;
- struct kconn *kconn = configuration;
+ struct kconn *kconn = static_cast<struct kconn *>(configuration);
__internal_enter();
r = __internal_can_own(kconn->bus_type, g_udesc.uid, g_udesc.gid, g_udesc.label, service);
__internal_exit();