From a6c97fc460e1e6bfd491262530057f876f6b20d1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 23 Jul 2017 09:28:45 -0400 Subject: [PATCH] Drop bus-policy bits --- src/core/bus-policy.c | 180 ----------------------------------- src/core/bus-policy.h | 64 ------------- src/core/meson.build | 2 - test/bus-policy/check-own-rules.conf | 14 --- test/bus-policy/hello.conf | 14 --- test/bus-policy/many-rules.conf | 61 ------------ test/bus-policy/methods.conf | 17 ---- test/bus-policy/ownerships.conf | 24 ----- test/bus-policy/signals.conf | 15 --- test/bus-policy/test.conf | 20 ---- test/meson.build | 7 -- 11 files changed, 418 deletions(-) delete mode 100644 src/core/bus-policy.c delete mode 100644 src/core/bus-policy.h delete mode 100644 test/bus-policy/check-own-rules.conf delete mode 100644 test/bus-policy/hello.conf delete mode 100644 test/bus-policy/many-rules.conf delete mode 100644 test/bus-policy/methods.conf delete mode 100644 test/bus-policy/ownerships.conf delete mode 100644 test/bus-policy/signals.conf delete mode 100644 test/bus-policy/test.conf diff --git a/src/core/bus-policy.c b/src/core/bus-policy.c deleted file mode 100644 index 4907c26..0000000 --- a/src/core/bus-policy.c +++ /dev/null @@ -1,180 +0,0 @@ -/*** - This file is part of systemd. - - Copyright 2014 Daniel Mack - - systemd 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. - - systemd 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 systemd; If not, see . -***/ - -#include - -#include "alloc-util.h" -#include "bus-kernel.h" -#include "bus-policy.h" -#include "kdbus.h" -#include "string-table.h" -#include "user-util.h" -#include "util.h" - -int bus_kernel_translate_access(BusPolicyAccess access) { - assert(access >= 0); - assert(access < _BUS_POLICY_ACCESS_MAX); - - switch (access) { - - case BUS_POLICY_ACCESS_SEE: - return KDBUS_POLICY_SEE; - - case BUS_POLICY_ACCESS_TALK: - return KDBUS_POLICY_TALK; - - case BUS_POLICY_ACCESS_OWN: - return KDBUS_POLICY_OWN; - - default: - assert_not_reached("Unknown policy access"); - } -} - -int bus_kernel_translate_policy(const BusNamePolicy *policy, struct kdbus_item *item) { - int r; - - assert(policy); - assert(item); - - switch (policy->type) { - - case BUSNAME_POLICY_TYPE_USER: { - const char *user = policy->name; - uid_t uid; - - r = get_user_creds(&user, &uid, NULL, NULL, NULL); - if (r < 0) - return r; - - item->policy_access.type = KDBUS_POLICY_ACCESS_USER; - item->policy_access.id = uid; - break; - } - - case BUSNAME_POLICY_TYPE_GROUP: { - const char *group = policy->name; - gid_t gid; - - r = get_group_creds(&group, &gid); - if (r < 0) - return r; - - item->policy_access.type = KDBUS_POLICY_ACCESS_GROUP; - item->policy_access.id = gid; - break; - } - - default: - assert_not_reached("Unknown policy type"); - } - - item->policy_access.access = bus_kernel_translate_access(policy->access); - - return 0; -} - -int bus_kernel_make_starter( - int fd, - const char *name, - bool activating, - bool accept_fd, - BusNamePolicy *policy, - BusPolicyAccess world_policy) { - - struct kdbus_cmd_free cmd_free = { .size = sizeof(cmd_free) }; - struct kdbus_cmd_hello *hello; - struct kdbus_item *n; - size_t policy_cnt = 0; - BusNamePolicy *po; - size_t size; - int r; - - assert(fd >= 0); - assert(name); - - LIST_FOREACH(policy, po, policy) - policy_cnt++; - - if (world_policy >= 0) - policy_cnt++; - - size = offsetof(struct kdbus_cmd_hello, items) + - ALIGN8(offsetof(struct kdbus_item, str) + strlen(name) + 1) + - policy_cnt * ALIGN8(offsetof(struct kdbus_item, policy_access) + sizeof(struct kdbus_policy_access)); - - hello = alloca0_align(size, 8); - - n = hello->items; - strcpy(n->str, name); - n->size = offsetof(struct kdbus_item, str) + strlen(n->str) + 1; - n->type = KDBUS_ITEM_NAME; - n = KDBUS_ITEM_NEXT(n); - - LIST_FOREACH(policy, po, policy) { - n->type = KDBUS_ITEM_POLICY_ACCESS; - n->size = offsetof(struct kdbus_item, policy_access) + sizeof(struct kdbus_policy_access); - - r = bus_kernel_translate_policy(po, n); - if (r < 0) - return r; - - n = KDBUS_ITEM_NEXT(n); - } - - if (world_policy >= 0) { - n->type = KDBUS_ITEM_POLICY_ACCESS; - n->size = offsetof(struct kdbus_item, policy_access) + sizeof(struct kdbus_policy_access); - n->policy_access.type = KDBUS_POLICY_ACCESS_WORLD; - n->policy_access.access = bus_kernel_translate_access(world_policy); - } - - hello->size = size; - hello->flags = - (activating ? KDBUS_HELLO_ACTIVATOR : KDBUS_HELLO_POLICY_HOLDER) | - (accept_fd ? KDBUS_HELLO_ACCEPT_FD : 0); - hello->pool_size = KDBUS_POOL_SIZE; - hello->attach_flags_send = _KDBUS_ATTACH_ANY; - hello->attach_flags_recv = _KDBUS_ATTACH_ANY; - - if (ioctl(fd, KDBUS_CMD_HELLO, hello) < 0) { - if (errno == ENOTTY) /* Major API change */ - return -ESOCKTNOSUPPORT; - return -errno; - } - - /* not interested in any output values */ - cmd_free.offset = hello->offset; - (void) ioctl(fd, KDBUS_CMD_FREE, &cmd_free); - - /* The higher 32bit of the bus_flags fields are considered - * 'incompatible flags'. Refuse them all for now. */ - if (hello->bus_flags > 0xFFFFFFFFULL) - return -ESOCKTNOSUPPORT; - - return fd; -} - -static const char* const bus_policy_access_table[_BUS_POLICY_ACCESS_MAX] = { - [BUS_POLICY_ACCESS_SEE] = "see", - [BUS_POLICY_ACCESS_TALK] = "talk", - [BUS_POLICY_ACCESS_OWN] = "own", -}; - -DEFINE_STRING_TABLE_LOOKUP(bus_policy_access, BusPolicyAccess); diff --git a/src/core/bus-policy.h b/src/core/bus-policy.h deleted file mode 100644 index 5b2c4d5..0000000 --- a/src/core/bus-policy.h +++ /dev/null @@ -1,64 +0,0 @@ -#pragma once - -/*** - This file is part of systemd. - - Copyright 2014 Daniel Mack - - systemd 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. - - systemd 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 systemd; If not, see . -***/ - -#include "kdbus.h" -#include "list.h" -#include "macro.h" - -typedef struct BusNamePolicy BusNamePolicy; - -typedef enum BusPolicyAccess { - BUS_POLICY_ACCESS_SEE, - BUS_POLICY_ACCESS_TALK, - BUS_POLICY_ACCESS_OWN, - _BUS_POLICY_ACCESS_MAX, - _BUS_POLICY_ACCESS_INVALID = -1 -} BusPolicyAccess; - -typedef enum BusNamePolicyType { - BUSNAME_POLICY_TYPE_USER, - BUSNAME_POLICY_TYPE_GROUP, - _BUSNAME_POLICY_TYPE_MAX, - _BUSNAME_POLICY_TYPE_INVALID = -1 -} BusNamePolicyType; - -struct BusNamePolicy { - BusNamePolicyType type; - BusPolicyAccess access; - - char *name; - - LIST_FIELDS(BusNamePolicy, policy); -}; - -int bus_kernel_translate_access(BusPolicyAccess access); -int bus_kernel_translate_policy(const BusNamePolicy *policy, struct kdbus_item *item); - -const char* bus_policy_access_to_string(BusPolicyAccess i) _const_; -BusPolicyAccess bus_policy_access_from_string(const char *s) _pure_; - -int bus_kernel_make_starter( - int fd, - const char *name, - bool activating, - bool accept_fd, - BusNamePolicy *policy, - BusPolicyAccess world_policy); diff --git a/src/core/meson.build b/src/core/meson.build index eb9d74b..569eed9 100644 --- a/src/core/meson.build +++ b/src/core/meson.build @@ -15,8 +15,6 @@ libcore_la_sources = ''' service.h socket.c socket.h - bus-policy.c - bus-policy.h target.c target.h device.c diff --git a/test/bus-policy/check-own-rules.conf b/test/bus-policy/check-own-rules.conf deleted file mode 100644 index bc2f415..0000000 --- a/test/bus-policy/check-own-rules.conf +++ /dev/null @@ -1,14 +0,0 @@ - - - mybususer - unix:path=/foo/bar - tcp:port=1234 - /usr/share/foo - - - - - - - diff --git a/test/bus-policy/hello.conf b/test/bus-policy/hello.conf deleted file mode 100644 index af09893..0000000 --- a/test/bus-policy/hello.conf +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - diff --git a/test/bus-policy/many-rules.conf b/test/bus-policy/many-rules.conf deleted file mode 100644 index 70dd538..0000000 --- a/test/bus-policy/many-rules.conf +++ /dev/null @@ -1,61 +0,0 @@ - - - mybususer - unix:path=/foo/bar - tcp:port=1234 - basic.d - - /usr/share/foo - nonexistent.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5000 - 5000 - 300 - 5000 - 6000 - 50 - 80 - 64 - 64 - 256 - 512 - - diff --git a/test/bus-policy/methods.conf b/test/bus-policy/methods.conf deleted file mode 100644 index 4bc38f9..0000000 --- a/test/bus-policy/methods.conf +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/test/bus-policy/ownerships.conf b/test/bus-policy/ownerships.conf deleted file mode 100644 index bc3a230..0000000 --- a/test/bus-policy/ownerships.conf +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/test/bus-policy/signals.conf b/test/bus-policy/signals.conf deleted file mode 100644 index 440e3fe..0000000 --- a/test/bus-policy/signals.conf +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - diff --git a/test/bus-policy/test.conf b/test/bus-policy/test.conf deleted file mode 100644 index ee6afcd..0000000 --- a/test/bus-policy/test.conf +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/test/meson.build b/test/meson.build index a5d78fb..c16ca92 100644 --- a/test/meson.build +++ b/test/meson.build @@ -126,13 +126,6 @@ test_data_files = ''' test-execute/exec-read-only-path-succeed.service test-execute/exec-privatedevices-yes-capability-sys-rawio.service test-execute/exec-privatedevices-no-capability-sys-rawio.service - bus-policy/hello.conf - bus-policy/methods.conf - bus-policy/ownerships.conf - bus-policy/signals.conf - bus-policy/check-own-rules.conf - bus-policy/many-rules.conf - bus-policy/test.conf hwdb/10-bad.hwdb journal-data/journal-1.txt journal-data/journal-2.txt -- 2.7.4