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

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Strace-devel mailing list
Strace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to