]> granicus.if.org Git - strace/commitdiff
msghdr: change register based size types from unsigned long to kernel_ureg_t
authorDmitry V. Levin <ldv@altlinux.org>
Sun, 25 Dec 2016 00:20:30 +0000 (00:20 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Sun, 25 Dec 2016 11:32:45 +0000 (11:32 +0000)
* defs.h (dumpiov_in_msghdr): Change data_size argument type
from unsigned long to kernel_ureg_t.
* msghdr.h (print_struct_msghdr): Likewise.
* msghdr.c (print_struct_msghdr): Likewise.  Cast msghdr.msg_iovlen
and msghdr.msg_controllen to kernel_ureg_t instead of unsigned long.
(decode_msghdr, dumpiov_in_msghdr): Change data_size argument type
from unsigned long to kernel_ureg_t.
(SYS_FUNC(sendmsg)): Pass -1 instead of -1UL as data_size argument
to decode_msghdr.
* mmsghdr.c (print_struct_mmsghdr): Pass (kernel_ureg_t) -1 instead
of -1UL as data_size argument to print_struct_msghdr.
(dumpiov_in_mmsghdr): Cast msghdr.msg_iovlen to kernel_ureg_t instead
of unsigned long.
* syscall.c (dumpio): Pass -1 instead of -1UL as data_size argument
to dumpiov_in_msghdr

defs.h
mmsghdr.c
msghdr.c
msghdr.h
syscall.c

diff --git a/defs.h b/defs.h
index 7a11d011ac8d59068891b565a6b4aed9304374f0..d8f0d1ba133a229960d10268b3b865f64f31059a 100644 (file)
--- a/defs.h
+++ b/defs.h
@@ -601,7 +601,7 @@ extern void print_numeric_umode_t(unsigned short);
 extern void print_numeric_long_umask(unsigned long);
 
 extern void
-dumpiov_in_msghdr(struct tcb *, kernel_ureg_t addr, unsigned long data_size);
+dumpiov_in_msghdr(struct tcb *, kernel_ureg_t addr, kernel_ureg_t data_size);
 
 extern void
 dumpiov_in_mmsghdr(struct tcb *, kernel_ureg_t addr);
index 788a0fa9141a32d19c6dd43fac02c46b7251313a..a21a3003c1bb902c8a59ac53d7ee393497ca03e7 100644 (file)
--- a/mmsghdr.c
+++ b/mmsghdr.c
@@ -68,7 +68,7 @@ print_struct_mmsghdr(struct tcb *tcp, void *elem_buf,
 
        tprints("{msg_hdr=");
        print_struct_msghdr(tcp, &mmsg->msg_hdr, c->p_user_msg_namelen,
-                           c->use_msg_len ? mmsg->msg_len : -1UL);
+                           c->use_msg_len ? mmsg->msg_len : (kernel_ureg_t) -1);
        if (c->msg_len_vlen) {
                tprintf(", msg_len=%u", mmsg->msg_len);
                --c->msg_len_vlen;
@@ -160,7 +160,7 @@ dumpiov_in_mmsghdr(struct tcb *const tcp, kernel_ureg_t addr)
                if (!fetched)
                        break;
                tprintf(" = %lu buffers in vector %u\n",
-                       (unsigned long) mmsg.msg_hdr.msg_iovlen, i);
+                       (kernel_ureg_t) mmsg.msg_hdr.msg_iovlen, i);
                dumpiov_upto(tcp, mmsg.msg_hdr.msg_iovlen,
                        (kernel_ureg_t) mmsg.msg_hdr.msg_iov, mmsg.msg_len);
        }
index 0c87165c09e510b0b090829d03130d1cd4683213..da99e55f4e9feec2ca9e6841595f080aed362bcc 100644 (file)
--- a/msghdr.c
+++ b/msghdr.c
@@ -332,7 +332,7 @@ decode_msg_control(struct tcb *const tcp, const kernel_ureg_t addr,
 void
 print_struct_msghdr(struct tcb *tcp, const struct msghdr *msg,
                    const int *const p_user_msg_namelen,
-                   const unsigned long data_size)
+                   const kernel_ureg_t data_size)
 {
        const int msg_namelen =
                p_user_msg_namelen && (int) msg->msg_namelen > *p_user_msg_namelen
@@ -351,13 +351,13 @@ print_struct_msghdr(struct tcb *tcp, const struct msghdr *msg,
 
        tprints(", msg_iov=");
 
-       tprint_iov_upto(tcp, (unsigned long) msg->msg_iovlen,
+       tprint_iov_upto(tcp, msg->msg_iovlen,
                        (kernel_ureg_t) msg->msg_iov, decode, data_size);
-       tprintf(", msg_iovlen=%lu", (unsigned long) msg->msg_iovlen);
+       tprintf(", msg_iovlen=%lu", (kernel_ureg_t) msg->msg_iovlen);
 
        decode_msg_control(tcp, (kernel_ureg_t) msg->msg_control,
                           msg->msg_controllen);
-       tprintf(", msg_controllen=%lu", (unsigned long) msg->msg_controllen);
+       tprintf(", msg_controllen=%lu", (kernel_ureg_t) msg->msg_controllen);
 
        tprints(", msg_flags=");
        printflags(msg_flags, msg->msg_flags, "MSG_???");
@@ -380,7 +380,7 @@ fetch_msghdr_namelen(struct tcb *const tcp, const kernel_ureg_t addr,
 
 static void
 decode_msghdr(struct tcb *const tcp, const int *const p_user_msg_namelen,
-             const kernel_ureg_t addr, const unsigned long data_size)
+             const kernel_ureg_t addr, const kernel_ureg_t data_size)
 {
        struct msghdr msg;
 
@@ -392,7 +392,7 @@ decode_msghdr(struct tcb *const tcp, const int *const p_user_msg_namelen,
 
 void
 dumpiov_in_msghdr(struct tcb *const tcp, const kernel_ureg_t addr,
-                 const unsigned long data_size)
+                 const kernel_ureg_t data_size)
 {
        struct msghdr msg;
 
@@ -406,7 +406,7 @@ SYS_FUNC(sendmsg)
 {
        printfd(tcp, tcp->u_arg[0]);
        tprints(", ");
-       decode_msghdr(tcp, 0, tcp->u_arg[1], -1UL);
+       decode_msghdr(tcp, 0, tcp->u_arg[1], -1);
        /* flags */
        tprints(", ");
        printflags(msg_flags, tcp->u_arg[2], "MSG_???");
index 41dfd8cae46a6fbdb31e1ed84daf350006a4c1d2..c693df3141fda6e7a5cdf0d448902551e4c24d32 100644 (file)
--- a/msghdr.h
+++ b/msghdr.h
@@ -12,6 +12,9 @@ struct mmsghdr {
 # endif
 
 struct tcb;
-extern void print_struct_msghdr(struct tcb *, const struct msghdr *, const int *, unsigned long);
+
+extern void
+print_struct_msghdr(struct tcb *, const struct msghdr *,
+                   const int *p_user_msg_namelen, kernel_ureg_t data_size);
 
 #endif /* !STRACE_MSGHDR_H */
index 63d3b0017a7d3942d9bcecb43d33d4837359a287..6839dabe63a2dd09039a0363eeba5bbd490fbebe 100644 (file)
--- a/syscall.c
+++ b/syscall.c
@@ -494,7 +494,7 @@ dumpio(struct tcb *tcp)
                        dumpiov_upto(tcp, tcp->u_arg[2], tcp->u_arg[1], -1);
                        break;
                case SEN_sendmsg:
-                       dumpiov_in_msghdr(tcp, tcp->u_arg[1], -1UL);
+                       dumpiov_in_msghdr(tcp, tcp->u_arg[1], -1);
                        break;
                case SEN_sendmmsg:
                        dumpiov_in_mmsghdr(tcp, tcp->u_arg[1]);