From: Eugene Syromyatnikov Date: Thu, 27 Oct 2016 07:12:32 +0000 (+0300) Subject: mq: print msg payload only in case of successful mq_timedreceive call X-Git-Tag: v4.15~172 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=26690859f6055bc5cdf96847972040401852acc8;p=strace mq: print msg payload only in case of successful mq_timedreceive call 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. --- diff --git a/mq.c b/mq.c index aa05bb16..c04c8e98 100644 --- 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