On Sun, Jul 02, 2017 at 12:12:54PM +0800, JingPiao Chen wrote:
> when sizeof(obj) - 1 > DEFAULT_STRLEN, we print all string,
> but strace print "STR"..., so the test fault.
> This appear when I test packet_diag_msg PACKET_DIAG_MCLIST.

Does this patch solve it?

--- a/tests/test_nlattr.h
+++ b/tests/test_nlattr.h
@@ -99,20 +99,19 @@ print_nlattr(const unsigned int nla_len, const char *const 
nla_type)
                           init_msg_, print_msg_,                       \
                           nla_type_, pattern_, obj_, ...)              \
        do {                                                            \
+               const size_t plen = sizeof(obj_) - 1 > DEFAULT_STRLEN   \
+                       ? DEFAULT_STRLEN : sizeof(obj_) - 1;            \
                /* len < sizeof(obj_) */                                \
                TEST_NLATTR_((fd_), (nlh0_), (hdrlen_),                 \
                        (init_msg_), (print_msg_),                      \
                        (nla_type_), #nla_type_,                        \
-                       sizeof(obj_) - 1,                               \
-                       (pattern_), sizeof(obj_) - 1,                   \
-                       printf("\"%.*s\"",                              \
-                       (int) sizeof(obj_) - 1, (pattern_)));           \
+                       plen, (pattern_), plen,                         \
+                       printf("\"%.*s\"", (int) plen, (pattern_)));    \
                /* short read of sizeof(obj_) */                        \
                TEST_NLATTR_((fd_), (nlh0_), (hdrlen_),                 \
                        (init_msg_), (print_msg_),                      \
                        (nla_type_), #nla_type_,                        \
-                       sizeof(obj_),                                   \
-                       (pattern_), sizeof(obj_) - 1,                   \
+                       sizeof(obj_), (pattern_), plen,                 \
                        printf("%p",                                    \
                               RTA_DATA(NLMSG_ATTR(nlh, (hdrlen_)))));  \
                /* sizeof(obj_) */                                      \
@@ -128,15 +127,15 @@ print_nlattr(const unsigned int nla_len, const char 
*const nla_type)
                          init_msg_, print_msg_,                        \
                          nla_type_, pattern_, obj_, print_elem_)       \
        do {                                                            \
+               const size_t plen =                                     \
+                       sizeof((obj_)[0]) - 1 > DEFAULT_STRLEN          \
+                       ? DEFAULT_STRLEN : sizeof((obj_)[0]) - 1;       \
                /* len < sizeof((obj_)[0]) */                           \
                TEST_NLATTR_((fd_), (nlh0_), (hdrlen_),                 \
                        (init_msg_), (print_msg_),                      \
                        (nla_type_), #nla_type_,                        \
-                       sizeof((obj_)[0]) - 1,                          \
-                       (pattern_), sizeof((obj_)[0]) - 1,              \
-                       printf("\"%.*s\"",                              \
-                              (int) sizeof((obj_)[0]) - 1,             \
-                              (pattern_)));                            \
+                       plen, (pattern_), plen,                         \
+                       printf("\"%.*s\"", (int) plen, (pattern_)));    \
                /* sizeof((obj_)[0]) < len < sizeof(obj_) */            \
                TEST_NLATTR_((fd_), (nlh0_), (hdrlen_),                 \
                        (init_msg_), (print_msg_),                      \

-- 
ldv

Attachment: signature.asc
Description: PGP signature

------------------------------------------------------------------------------
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