]> granicus.if.org Git - strace/blobdiff - io.c
netlink_sock_diag: print inet_diag_sockid.idiag_if as an interface index
[strace] / io.c
diff --git a/io.c b/io.c
index acac455a3726dbe78ae889422706365c9b867c38..9ce1cf554311f9817f084256c2953495643a73c3 100644 (file)
--- a/io.c
+++ b/io.c
@@ -70,7 +70,7 @@ print_iovec(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
        kernel_ulong_t iov_buf[2], len;
        struct print_iovec_config *c = data;
 
-        if (elem_size < sizeof(iov_buf)) {
+       if (elem_size < sizeof(iov_buf)) {
                iov_buf[0] = ((unsigned int *) elem_buf)[0];
                iov_buf[1] = ((unsigned int *) elem_buf)[1];
                iov = iov_buf;
@@ -95,7 +95,8 @@ print_iovec(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
                                len = c->data_size;
                        if (c->data_size != (kernel_ulong_t) -1)
                                c->data_size -= len;
-                       decode_netlink(tcp, iov[0], len);
+                       /* assume that the descriptor is 1st syscall argument */
+                       decode_netlink(tcp, tcp->u_arg[0], iov[0], len);
                        break;
                default:
                        printaddr(iov[0]);
@@ -117,8 +118,9 @@ tprint_iov_upto(struct tcb *const tcp, const kernel_ulong_t len,
                const kernel_ulong_t data_size)
 {
        kernel_ulong_t iov[2];
-       struct print_iovec_config config =
-               { .decode_iov = decode_iov, .data_size = data_size };
+       struct print_iovec_config config = {
+               .decode_iov = decode_iov, .data_size = data_size
+       };
 
        print_array(tcp, addr, len, iov, current_wordsize * 2,
                    umoven_or_printaddr_ignore_syserror, print_iovec, &config);