]> granicus.if.org Git - strace/blob - netlink_selinux.c
Update debian/watch
[strace] / netlink_selinux.c
1 /*
2  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
3  * Copyright (c) 2017-2018 The strace developers.
4  * All rights reserved.
5  *
6  * SPDX-License-Identifier: LGPL-2.1-or-later
7  */
8
9 #include "defs.h"
10 #include "netlink.h"
11 #include "print_fields.h"
12
13 #include <linux/selinux_netlink.h>
14
15 bool
16 decode_netlink_selinux(struct tcb *const tcp,
17                        const struct nlmsghdr *const nlmsghdr,
18                        const kernel_ulong_t addr,
19                        const unsigned int len)
20 {
21         switch (nlmsghdr->nlmsg_type) {
22         case SELNL_MSG_SETENFORCE: {
23                 struct selnl_msg_setenforce msg;
24
25                 if (len < sizeof(msg))
26                         printstr_ex(tcp, addr, len, QUOTE_FORCE_HEX);
27                 else if (!umove_or_printaddr(tcp, addr, &msg)) {
28                         PRINT_FIELD_D("{", msg, val);
29                         tprints("}");
30                 }
31                 break;
32         }
33         case SELNL_MSG_POLICYLOAD: {
34                 struct selnl_msg_policyload msg;
35
36                 if (len < sizeof(msg))
37                         printstr_ex(tcp, addr, len, QUOTE_FORCE_HEX);
38                 else if (!umove_or_printaddr(tcp, addr, &msg)) {
39                         PRINT_FIELD_U("{", msg, seqno);
40                         tprints("}");
41                 }
42                 break;
43         }
44         default:
45                 return false;
46         }
47
48         return true;
49 }