(root)/
strace-6.5/
src/
netlink_selinux.c
       1  /*
       2   * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
       3   * Copyright (c) 2017-2021 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  
      12  #include <linux/selinux_netlink.h>
      13  
      14  bool
      15  decode_netlink_selinux(struct tcb *const tcp,
      16  		       const struct nlmsghdr *const nlmsghdr,
      17  		       const kernel_ulong_t addr,
      18  		       const unsigned int len)
      19  {
      20  	switch (nlmsghdr->nlmsg_type) {
      21  	case SELNL_MSG_SETENFORCE: {
      22  		struct selnl_msg_setenforce msg;
      23  
      24  		if (len < sizeof(msg))
      25  			printstr_ex(tcp, addr, len, QUOTE_FORCE_HEX);
      26  		else if (!umove_or_printaddr(tcp, addr, &msg)) {
      27  			tprint_struct_begin();
      28  			PRINT_FIELD_D(msg, val);
      29  			tprint_struct_end();
      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  			tprint_struct_begin();
      40  			PRINT_FIELD_U(msg, seqno);
      41  			tprint_struct_end();
      42  		}
      43  		break;
      44  	}
      45  	default:
      46  		return false;
      47  	}
      48  
      49  	return true;
      50  }