[PATCH 2/2] tests: check decoding of NETLINK_SELINUX protocol
JingPiao Chen
chenjingpiao at gmail.com
Fri Jul 14 16:22:57 UTC 2017
On Fri, Jul 14, 2017 at 01:16:37PM +0800, JingPiao Chen wrote:
[...]
> +static void
> +test_selnl_msg_setenforce(const int fd)
> +{
> + void *const nlh0 = tail_alloc(NLMSG_HDRLEN);
> + static char pattern[4096];
> + fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
> +
> + static const struct selnl_msg_setenforce msg = {
> + .val = 0xfbdcdfab
> + };
> + TEST_NETLINK_OBJECT(fd, nlh0,
> + SELNL_MSG_SETENFORCE, NLM_F_REQUEST,
> + pattern, msg,
> + PRINT_FIELD_D("{", msg, val);
> + printf("}"));
> +}
> +
> +static void
> +test_selnl_msg_policyload(const int fd)
> +{
> + void *const nlh0 = tail_alloc(NLMSG_HDRLEN);
> + static char pattern[4096];
> + fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
Move ...
> +
> + static const struct selnl_msg_policyload msg = {
> + .seqno = 0xabdcfabc
> + };
> + TEST_NETLINK_OBJECT(fd, nlh0,
> + SELNL_MSG_POLICYLOAD, NLM_F_REQUEST,
> + pattern, msg,
> + PRINT_FIELD_U("{", msg, seqno);
> + printf("}"));
> +}
> +
> int main(void)
> {
> skip_if_unavailable("/proc/self/fd/");
> @@ -57,6 +103,9 @@ int main(void)
> int fd = create_nl_socket(NETLINK_SELINUX);
>
> test_nlmsg_type(fd);
> + test_selnl_msg_unspec(fd);
> + test_selnl_msg_setenforce(fd);
> + test_selnl_msg_policyload(fd);
>
> printf("+++ exited with 0 +++\n");
>
> diff --git a/tests/test_netlink.h b/tests/test_netlink.h
> index 7049128..b6f6ac9 100644
> --- a/tests/test_netlink.h
> +++ b/tests/test_netlink.h
> @@ -45,3 +45,33 @@
> (type_), #type_, \
> (flags_), #flags_, \
> (data_len_), (src_), (slen_), __VA_ARGS__)
> +
> +#define TEST_NETLINK_OBJECT(fd_, nlh0_, \
> + type_, flags_, \
> + pattern_, obj_, ...) \
> + do { \
> + const unsigned int plen = \
> + sizeof(obj_) - 1 > DEFAULT_STRLEN \
> + ? DEFAULT_STRLEN : (int) sizeof(obj_) - 1; \
... here. The template of TEST_NETLINK_OBJECT is TEST_NLATTR_OBJECT.
I think pattern can declare here instead of in the caller.
If this thought is ok, I will send version 2.
> + /* len < sizeof(obj_) */ \
> + TEST_NETLINK_((fd_), (nlh0_), \
> + (type_), #type_, \
> + (flags_), #flags_, \
> + plen, (pattern_), plen, \
> + print_quoted_hex((pattern_), plen)); \
> + /* short read of sizeof(obj_) */ \
> + TEST_NETLINK_((fd_), (nlh0_), \
> + (type_), #type_, \
> + (flags_), #flags_, \
> + sizeof(obj_), \
> + (pattern_), sizeof(obj_) - 1, \
> + printf("%p", \
> + NLMSG_DATA(TEST_NETLINK_nlh))); \
> + /* sizeof(obj_) */ \
> + TEST_NETLINK_((fd_), (nlh0_), \
> + (type_), #type_, \
> + (flags_), #flags_, \
> + sizeof(obj_), \
> + &(obj_), sizeof(obj_), \
> + __VA_ARGS__); \
> + } while (0)
--
JingPiao Chen
More information about the Strace-devel
mailing list