]> granicus.if.org Git - strace/commitdiff
mq: print msg payload only in case of successful mq_timedreceive call
authorEugene Syromyatnikov <evgsyr@gmail.com>
Thu, 27 Oct 2016 07:12:32 +0000 (10:12 +0300)
committerEugene Syromyatnikov <evgsyr@gmail.com>
Fri, 28 Oct 2016 23:54:02 +0000 (02:54 +0300)
Also, use u_rval for determining message size.

* mq.c (SYS_FUNC(mq_timedreceive)): Check for syserror and non-negative
u_rval before calling printstr on msg_ptr argument, or use printaddr otherwise;
provide u_rval as string size.

mq.c

diff --git a/mq.c b/mq.c
index aa05bb167e3db0c318515dd46b04c42209c659e1..c04c8e98e998df9e17046b495aa2135bbed1fe24 100644 (file)
--- a/mq.c
+++ b/mq.c
@@ -60,7 +60,10 @@ SYS_FUNC(mq_timedreceive)
        if (entering(tcp)) {
                tprintf("%d, ", (int) tcp->u_arg[0]);
        } else {
-               printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]);
+               if (!syserror(tcp) && (tcp->u_rval >= 0))
+                       printstr(tcp, tcp->u_arg[1], tcp->u_rval);
+               else
+                       printaddr(tcp->u_arg[1]);
                tprintf(", %llu, %ld, ", getarg_ull(tcp, 2), tcp->u_arg[3]);
                /*
                 * Since the timeout parameter is read by the kernel