From: Adrian Szyndela Date: Thu, 21 Mar 2019 08:23:00 +0000 (+0100) Subject: cpp-ify libdbuspolicy1.c X-Git-Tag: accepted/tizen/unified/20190424.040758~35 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d44874004f4ba75b07a2fa73e6e5612173d007e5;p=platform%2Fcore%2Fsystem%2Flibdbuspolicy.git cpp-ify libdbuspolicy1.c Change-Id: I6f0ef0cb5bf558500020ee715e301f708fffb04d --- diff --git a/Makefile.am b/Makefile.am index 83cd183..420809a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 \ diff --git a/configure.ac b/configure.ac index 5ffc83a..febecd2 100644 --- a/configure.ac +++ b/configure.ac @@ -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 diff --git a/doxygen.cfg b/doxygen.cfg index 0b1c67d..498ec70 100644 --- a/doxygen.cfg +++ b/doxygen.cfg @@ -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 diff --git a/src/kdbus.c b/src/kdbus.cpp similarity index 84% rename from src/kdbus.c rename to src/kdbus.cpp index 1d983f2..cdf4429 100644 --- a/src/kdbus.c +++ b/src/kdbus.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #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(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(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(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)) { diff --git a/src/libdbuspolicy1.c b/src/libdbuspolicy1.cpp similarity index 93% rename from src/libdbuspolicy1.c rename to src/libdbuspolicy1.cpp index c141b81..92b2d8c 100644 --- a/src/libdbuspolicy1.c +++ b/src/libdbuspolicy1.cpp @@ -19,11 +19,11 @@ #include "internal/internal.h" #include "libdbuspolicy1-private.h" -#include -#include +#include +#include #include -#include -#include +#include +#include #include #include #include @@ -31,7 +31,7 @@ #include #include #include -#include +#include #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(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(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(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(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(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(configuration); __internal_enter(); r = __internal_can_own(kconn->bus_type, g_udesc.uid, g_udesc.gid, g_udesc.label, service); __internal_exit();