Coverage Report

Created: 2026-07-16 06:25

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/selinux/libsepol/src/polcaps.c
Line
Count
Source
1
/*
2
 * Policy capability support functions
3
 */
4
5
#include <string.h>
6
#include <sepol/policydb/polcaps.h>
7
8
static const char *const polcap_names[POLICYDB_CAP_MAX + 1] = {
9
  [POLICYDB_CAP_NETPEER] = "network_peer_controls",
10
  [POLICYDB_CAP_OPENPERM] = "open_perms",
11
  [POLICYDB_CAP_EXTSOCKCLASS] = "extended_socket_class",
12
  [POLICYDB_CAP_ALWAYSNETWORK] = "always_check_network",
13
  [POLICYDB_CAP_CGROUPSECLABEL] = "cgroup_seclabel",
14
  [POLICYDB_CAP_NNP_NOSUID_TRANSITION] = "nnp_nosuid_transition",
15
  [POLICYDB_CAP_GENFS_SECLABEL_SYMLINKS] = "genfs_seclabel_symlinks",
16
  [POLICYDB_CAP_IOCTL_SKIP_CLOEXEC] = "ioctl_skip_cloexec",
17
  [POLICYDB_CAP_USERSPACE_INITIAL_CONTEXT] = "userspace_initial_context",
18
  [POLICYDB_CAP_NETLINK_XPERM] = "netlink_xperm",
19
  [POLICYDB_CAP_NETIF_WILDCARD] = "netif_wildcard",
20
  [POLICYDB_CAP_GENFS_SECLABEL_WILDCARD] = "genfs_seclabel_wildcard",
21
  [POLICYDB_CAP_FUNCTIONFS_SECLABEL] = "functionfs_seclabel",
22
  [POLICYDB_CAP_MEMFD_CLASS] = "memfd_class",
23
  [POLICYDB_CAP_BPF_TOKEN_PERMS] = "bpf_token_perms",
24
};
25
26
int sepol_polcap_getnum(const char *name)
27
321
{
28
321
  int capnum;
29
30
656
  for (capnum = 0; capnum <= POLICYDB_CAP_MAX; capnum++) {
31
655
    if (polcap_names[capnum] == NULL)
32
0
      continue;
33
655
    if (strcasecmp(polcap_names[capnum], name) == 0)
34
320
      return capnum;
35
655
  }
36
1
  return -1;
37
321
}
38
39
const char *sepol_polcap_getname(unsigned int capnum)
40
367
{
41
367
  if (capnum > POLICYDB_CAP_MAX)
42
45
    return NULL;
43
44
322
  return polcap_names[capnum];
45
367
}