]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/libsystemd/sd-bus/test-bus-creds.c
7eb7a38c39dc83623a354aa389549d3dd53503b6
[thirdparty/systemd.git] / src / libsystemd / sd-bus / test-bus-creds.c
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2
3 #include "sd-bus.h"
4
5 #include "bus-dump.h"
6 #include "cgroup-util.h"
7 #include "errno-util.h"
8 #include "tests.h"
9
10 int main(int argc, char *argv[]) {
11 _cleanup_(sd_bus_creds_unrefp) sd_bus_creds *creds = NULL;
12 int r;
13
14 test_setup_logging(LOG_DEBUG);
15
16 if (IN_SET(cg_unified(), -ENOMEDIUM, -ENOENT))
17 return log_tests_skipped("/sys/fs/cgroup/ not available");
18
19 r = sd_bus_creds_new_from_pid(&creds, 0, _SD_BUS_CREDS_ALL);
20 log_full_errno(r < 0 ? LOG_ERR : LOG_DEBUG, r, "sd_bus_creds_new_from_pid: %m");
21 assert_se(r >= 0);
22
23 bus_creds_dump(creds, NULL, true);
24
25 creds = sd_bus_creds_unref(creds);
26
27 r = sd_bus_creds_new_from_pid(&creds, 1, _SD_BUS_CREDS_ALL);
28 if (!ERRNO_IS_NEG_PRIVILEGE(r)) {
29 assert_se(r >= 0);
30 putchar('\n');
31 bus_creds_dump(creds, NULL, true);
32 }
33
34 creds = sd_bus_creds_unref(creds);
35
36 _cleanup_(sd_bus_unrefp) sd_bus *bus = NULL;
37 r = sd_bus_default_system(&bus);
38 if (r < 0)
39 log_warning_errno(r, "Unable to connect to system bus, skipping rest of test.");
40 else {
41 const char *unique;
42
43 assert_se(sd_bus_get_unique_name(bus, &unique) >= 0);
44
45 r = sd_bus_get_name_creds(bus, unique, _SD_BUS_CREDS_ALL, &creds);
46 log_full_errno(r < 0 ? LOG_ERR : LOG_DEBUG, r, "sd_bus_get_name_creds: %m");
47 assert_se(r >= 0);
48
49 putchar('\n');
50 bus_creds_dump(creds, NULL, true);
51 }
52
53 return 0;
54 }