/* # SPDX-License-Identifier: LGPL-2.1+ # ~~~ # Description: libcap tests # # Author: Susant Sahani # Copyright (c) 2018 Red Hat, Inc. # ~~~ */ #include #include #include #include #include #include #include #include #include #include #include #include #include void drop_cap(cap_value_t capflag) { cap_t d; d = cap_get_proc(); assert_non_null(d); assert_return_code(cap_set_flag(d, CAP_EFFECTIVE, 1, &capflag, CAP_CLEAR), 0); assert_return_code(cap_set_flag(d, CAP_PERMITTED, 1, &capflag, CAP_CLEAR), 0); assert_return_code(cap_set_proc(d), 0); } void test_drop_cap_net_raw(void **state) { int s; assert_true((s = socket(AF_INET, SOCK_RAW, IPPROTO_UDP)) >= 0); close(s); drop_cap(CAP_NET_RAW); assert_false((s = socket(PF_INET, SOCK_RAW, IPPROTO_UDP)) >= 0); } int main(int argc, char *argv[]) { const struct CMUnitTest libcap_tests[] = { cmocka_unit_test(test_drop_cap_net_raw), }; return cmocka_run_group_tests(libcap_tests, NULL, NULL); }