cpp-ify libdbuspolicy1.c 40/202540/3
authorAdrian Szyndela <adrian.s@samsung.com>
Thu, 21 Mar 2019 08:23:00 +0000 (09:23 +0100)
committerAdrian Szyndela <adrian.s@samsung.com>
Mon, 1 Apr 2019 12:09:37 +0000 (14:09 +0200)
Change-Id: I6f0ef0cb5bf558500020ee715e301f708fffb04d

Makefile.am
configure.ac
doxygen.cfg
src/kdbus.cpp [moved from src/kdbus.c with 84% similarity]
src/libdbuspolicy1.cpp [moved from src/libdbuspolicy1.c with 93% similarity]

index 83cd183..420809a 100644 (file)
@@ -52,8 +52,8 @@ lib_LTLIBRARIES = src/libdbuspolicy1.la
 
 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 \
index 5ffc83a..febecd2 100644 (file)
@@ -4,7 +4,7 @@ AC_INIT([dbuspolicy],
         [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
index 0b1c67d..498ec70 100644 (file)
@@ -4,7 +4,7 @@ GENERATE_LATEX         = NO
 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
similarity index 84%
rename from src/kdbus.c
rename to src/kdbus.cpp
index 1d983f2..cdf4429 100644 (file)
@@ -26,6 +26,7 @@
 #include <fcntl.h>
 #include <unistd.h>
 #include <stdbool.h>
+#include <cassert>
 
 #define CONNECTION_LABEL "libdbuspolicy1-kdbus"
 
@@ -54,7 +55,7 @@ static int kdbus_hello(struct kdbus_connection *conn,
        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;
@@ -70,7 +71,8 @@ static int kdbus_hello(struct kdbus_connection *conn,
        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;
@@ -91,7 +93,7 @@ void kdbus_shared_init_fd(kdbus_connection *conn, int fd)
 
 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,
@@ -136,6 +138,14 @@ union kdbus_cmd_union {
        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,
@@ -164,10 +174,7 @@ int kdbus_get_conn_info(kdbus_connection *conn,
                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) {
@@ -182,9 +189,9 @@ int kdbus_get_conn_info(kdbus_connection *conn,
        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)) {
similarity index 93%
rename from src/libdbuspolicy1.c
rename to src/libdbuspolicy1.cpp
index c141b81..92b2d8c 100644 (file)
 #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>
@@ -31,7 +31,7 @@
 #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"
@@ -56,7 +56,7 @@ static bool init_once_done = false;
 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;
@@ -136,7 +136,7 @@ static int bus_path_resolve(const char *bus_path, char *resolved_path, unsigned
                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++;
@@ -201,9 +201,9 @@ static struct kconn *get_global_conn(BusType bus_type, const char *resolved_path
        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;
@@ -227,8 +227,8 @@ static bool can_open(BusType bus_type, uid_t bus_owner)
 
 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;
@@ -260,7 +260,7 @@ DBUSPOLICY1_EXPORT void* dbuspolicy1_init(const char *bus_path)
 
 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)
@@ -287,7 +287,7 @@ DBUSPOLICY1_EXPORT int dbuspolicy1_check_out(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;
@@ -301,6 +301,9 @@ DBUSPOLICY1_EXPORT int dbuspolicy1_check_out(void* configuration,
 
        __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) {
@@ -318,9 +321,6 @@ DBUSPOLICY1_EXPORT int dbuspolicy1_check_out(void* configuration,
        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;
@@ -378,7 +378,7 @@ DBUSPOLICY1_EXPORT int dbuspolicy1_check_in(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;
@@ -418,7 +418,7 @@ end:
 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();