Coverage Report

Created: 2024-10-16 06:49

/src/selinux/libsepol/src/polcaps.c
Line
Count
Source (jump to first uncovered line)
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
};
20
21
int sepol_polcap_getnum(const char *name)
22
1.64k
{
23
1.64k
  int capnum;
24
25
4.14k
  for (capnum = 0; capnum <= POLICYDB_CAP_MAX; capnum++) {
26
4.05k
    if (polcap_names[capnum] == NULL)
27
0
      continue;
28
4.05k
    if (strcasecmp(polcap_names[capnum], name) == 0)
29
1.54k
      return capnum;
30
4.05k
  }
31
95
  return -1;
32
1.64k
}
33
34
const char *sepol_polcap_getname(unsigned int capnum)
35
0
{
36
0
  if (capnum > POLICYDB_CAP_MAX)
37
0
    return NULL;
38
39
0
  return polcap_names[capnum];
40
0
}