From: Dmitry V. Levin Date: Tue, 20 Dec 2016 16:43:26 +0000 (+0000) Subject: printstr: rename to printstrn, add printstr as a thin wrapper X-Git-Tag: v4.16~199 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a940d1a60fe97c27b161d9dc178606bf57707993;p=strace printstr: rename to printstrn, add printstr as a thin wrapper As about half of all printstr uses cases are invocations with the last argument set to -1, create a dedicated function for this use case. * defs.h (printstr): Rename to printstrn. All callers updated. (printstr): New static inline function. All callers updated. --- diff --git a/aio.c b/aio.c index 6ff20921..68194dec 100644 --- a/aio.c +++ b/aio.c @@ -130,7 +130,7 @@ print_iocb(struct tcb *tcp, const struct iocb *cb) case SUB_COMMON: if (cb->aio_lio_opcode == 1 && iocb_is_valid(cb)) { tprints(", str="); - printstr(tcp, cb->aio_buf, cb->aio_nbytes); + printstrn(tcp, cb->aio_buf, cb->aio_nbytes); } else { tprintf(", buf=%#" PRIx64, (uint64_t) cb->aio_buf); } diff --git a/bjm.c b/bjm.c index 6adbb6fa..03a078ce 100644 --- a/bjm.c +++ b/bjm.c @@ -35,7 +35,7 @@ SYS_FUNC(delete_module) { - printstr(tcp, tcp->u_arg[0], -1); + printstr(tcp, tcp->u_arg[0]); tprints(", "); printflags(delete_module_flags, tcp->u_arg[1], "O_???"); @@ -46,7 +46,7 @@ SYS_FUNC(init_module) { printaddr_klu(getarg_klu(tcp, 0)); tprintf(", %" PRI_klu ", ", getarg_klu(tcp, 1)); - printstr(tcp, tcp->u_arg[2], -1); + printstr(tcp, tcp->u_arg[2]); return RVAL_DECODED; } @@ -59,7 +59,7 @@ SYS_FUNC(finit_module) printfd(tcp, tcp->u_arg[0]); tprints(", "); /* param_values */ - printstr(tcp, tcp->u_arg[1], -1); + printstr(tcp, tcp->u_arg[1]); tprints(", "); /* flags */ printflags(module_init_flags, tcp->u_arg[2], "MODULE_INIT_???"); diff --git a/bpf.c b/bpf.c index d18c05df..df076e57 100644 --- a/bpf.c +++ b/bpf.c @@ -170,7 +170,7 @@ bpf_prog_load(struct tcb *const tcp, const kernel_ureg_t addr, printxval(bpf_prog_types, attr.prog_type, "BPF_PROG_TYPE_???"); tprintf(", insn_cnt=%u, insns=%#" PRIx64 ", license=", attr.insn_cnt, attr.insns); - printstr(tcp, attr.license, -1); + printstr(tcp, attr.license); tprintf(", log_level=%u, log_size=%u, log_buf=%#" PRIx64 ", kern_version=%u}", attr.log_level, attr.log_size, attr.log_buf, attr.kern_version); diff --git a/defs.h b/defs.h index 7fd50f47..ac4c539d 100644 --- a/defs.h +++ b/defs.h @@ -765,11 +765,17 @@ printaddr(kernel_ureg_t addr) } static inline void -printstr(struct tcb *tcp, kernel_ureg_t addr, long len) +printstrn(struct tcb *tcp, kernel_ureg_t addr, long len) { printstr_ex(tcp, addr, len, 0); } +static inline void +printstr(struct tcb *tcp, kernel_ureg_t addr) +{ + printstr_ex(tcp, addr, -1, QUOTE_0_TERMINATED); +} + static inline int printflags(const struct xlat *x, unsigned int flags, const char *dflt) { diff --git a/evdev.c b/evdev.c index c5088ae0..42abcb32 100644 --- a/evdev.c +++ b/evdev.c @@ -438,7 +438,7 @@ evdev_read_ioctl(struct tcb *const tcp, const unsigned int code, if (syserror(tcp)) printaddr(arg); else - printstr(tcp, arg, tcp->u_rval); + printstrn(tcp, arg, tcp->u_rval); return 1; # ifdef EVIOCGPROP case _IOC_NR(EVIOCGPROP(0)): diff --git a/execve.c b/execve.c index 07997d5f..03fe4762 100644 --- a/execve.c +++ b/execve.c @@ -70,7 +70,7 @@ printargv(struct tcb *const tcp, kernel_ureg_t addr) break; } tprints(sep); - printstr(tcp, wordsize < sizeof(cp.p64) ? cp.p32 : cp.p64, -1); + printstr(tcp, wordsize < sizeof(cp.p64) ? cp.p32 : cp.p64); } tprints("]"); } diff --git a/getrandom.c b/getrandom.c index c82b3b7f..c82d39c8 100644 --- a/getrandom.c +++ b/getrandom.c @@ -7,7 +7,7 @@ SYS_FUNC(getrandom) if (syserror(tcp)) printaddr(tcp->u_arg[0]); else - printstr(tcp, tcp->u_arg[0], tcp->u_rval); + printstrn(tcp, tcp->u_arg[0], tcp->u_rval); tprintf(", %lu, ", tcp->u_arg[1]); printflags(getrandom_flags, tcp->u_arg[2], "GRND_???"); } diff --git a/hostname.c b/hostname.c index c64d954d..cc66f3ff 100644 --- a/hostname.c +++ b/hostname.c @@ -2,7 +2,7 @@ SYS_FUNC(sethostname) { - printstr(tcp, tcp->u_arg[0], tcp->u_arg[1]); + printstrn(tcp, tcp->u_arg[0], tcp->u_arg[1]); tprintf(", %lu", tcp->u_arg[1]); return RVAL_DECODED; @@ -15,7 +15,7 @@ SYS_FUNC(gethostname) if (syserror(tcp)) printaddr(tcp->u_arg[0]); else - printstr(tcp, tcp->u_arg[0], -1); + printstr(tcp, tcp->u_arg[0]); tprintf(", %lu", tcp->u_arg[1]); } return 0; diff --git a/io.c b/io.c index d225eb6b..e3be54ad 100644 --- a/io.c +++ b/io.c @@ -41,7 +41,7 @@ SYS_FUNC(read) if (syserror(tcp)) printaddr(tcp->u_arg[1]); else - printstr(tcp, tcp->u_arg[1], tcp->u_rval); + printstrn(tcp, tcp->u_arg[1], tcp->u_rval); tprintf(", %lu", tcp->u_arg[2]); } return 0; @@ -51,7 +51,7 @@ SYS_FUNC(write) { printfd(tcp, tcp->u_arg[0]); tprints(", "); - printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]); + printstrn(tcp, tcp->u_arg[1], tcp->u_arg[2]); tprintf(", %lu", tcp->u_arg[2]); return RVAL_DECODED; @@ -87,7 +87,7 @@ print_iovec(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data) len = c->data_size; if (c->data_size != -1UL) c->data_size -= len; - printstr(tcp, iov[0], len); + printstrn(tcp, iov[0], len); break; case IOV_DECODE_NETLINK: if (len > c->data_size) @@ -156,7 +156,7 @@ SYS_FUNC(pread) if (syserror(tcp)) printaddr(tcp->u_arg[1]); else - printstr(tcp, tcp->u_arg[1], tcp->u_rval); + printstrn(tcp, tcp->u_arg[1], tcp->u_rval); tprintf(", %lu, ", tcp->u_arg[2]); printllval(tcp, "%lld", 3); } @@ -167,7 +167,7 @@ SYS_FUNC(pwrite) { printfd(tcp, tcp->u_arg[0]); tprints(", "); - printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]); + printstrn(tcp, tcp->u_arg[1], tcp->u_arg[2]); tprintf(", %lu, ", tcp->u_arg[2]); printllval(tcp, "%lld", 3); diff --git a/kexec.c b/kexec.c index 4872ca5b..a1f0ccbb 100644 --- a/kexec.c +++ b/kexec.c @@ -113,7 +113,7 @@ SYS_FUNC(kexec_file_load) /* cmdline_len */ tprintf("%" PRI_klu ", ", getarg_klu(tcp, 2)); /* cmdline */ - printstr(tcp, tcp->u_arg[3], tcp->u_arg[2]); + printstrn(tcp, tcp->u_arg[3], tcp->u_arg[2]); tprints(", "); /* flags */ printflags64(kexec_file_load_flags, getarg_klu(tcp, 4), "KEXEC_FILE_???"); diff --git a/keyctl.c b/keyctl.c index edf59e59..38a120e2 100644 --- a/keyctl.c +++ b/keyctl.c @@ -51,13 +51,13 @@ print_keyring_serial_number(key_serial_t id) SYS_FUNC(add_key) { /* type */ - printstr(tcp, tcp->u_arg[0], -1); + printstr(tcp, tcp->u_arg[0]); /* description */ tprints(", "); - printstr(tcp, tcp->u_arg[1], -1); + printstr(tcp, tcp->u_arg[1]); /* payload */ tprints(", "); - printstr(tcp, tcp->u_arg[2], tcp->u_arg[3]); + printstrn(tcp, tcp->u_arg[2], tcp->u_arg[3]); /* payload length */ tprintf(", %lu, ", tcp->u_arg[3]); /* keyring serial number */ @@ -69,13 +69,13 @@ SYS_FUNC(add_key) SYS_FUNC(request_key) { /* type */ - printstr(tcp, tcp->u_arg[0], -1); + printstr(tcp, tcp->u_arg[0]); /* description */ tprints(", "); - printstr(tcp, tcp->u_arg[1], -1); + printstr(tcp, tcp->u_arg[1]); /* callout_info */ tprints(", "); - printstr(tcp, tcp->u_arg[2], -1); + printstr(tcp, tcp->u_arg[2]); /* keyring serial number */ tprints(", "); print_keyring_serial_number(tcp->u_arg[3]); @@ -96,7 +96,7 @@ keyctl_update_key(struct tcb *tcp, key_serial_t id, kernel_ulong_t addr, { print_keyring_serial_number(id); tprints(", "); - printstr(tcp, addr, len); + printstrn(tcp, addr, len); tprintf(", %llu", zero_extend_signed_to_ull(len)); } @@ -135,9 +135,9 @@ keyctl_keyring_search(struct tcb *tcp, key_serial_t id1, kernel_ulong_t addr1, { print_keyring_serial_number(id1); tprints(", "); - printstr(tcp, addr1, -1); + printstr(tcp, addr1); tprints(", "); - printstr(tcp, addr2, -1); + printstr(tcp, addr2); tprints(", "); print_keyring_serial_number(id2); } @@ -157,7 +157,7 @@ keyctl_instantiate_key(struct tcb *tcp, key_serial_t id1, kernel_ulong_t addr, { print_keyring_serial_number(id1); tprints(", "); - printstr(tcp, addr, len); + printstrn(tcp, addr, len); tprintf(", %llu, ", zero_extend_signed_to_ull(len)); print_keyring_serial_number(id2); } @@ -256,7 +256,7 @@ keyctl_dh_compute(struct tcb *tcp, kernel_ulong_t params, kernel_ulong_t buf, kernel_ulong_t rval = (tcp->u_rval >= 0) && ((kernel_ulong_t) tcp->u_rval > len) ? len : (kernel_ulong_t) tcp->u_rval; - printstr(tcp, buf, rval); + printstrn(tcp, buf, rval); } tprintf(", %llu", zero_extend_signed_to_ull(len)); } @@ -290,7 +290,7 @@ SYS_FUNC(keyctl) break; case KEYCTL_JOIN_SESSION_KEYRING: - printstr(tcp, arg2, -1); + printstr(tcp, arg2); break; case KEYCTL_UPDATE: diff --git a/lookup_dcookie.c b/lookup_dcookie.c index 13f4370f..079a0581 100644 --- a/lookup_dcookie.c +++ b/lookup_dcookie.c @@ -40,7 +40,7 @@ SYS_FUNC(lookup_dcookie) if (syserror(tcp)) printaddr(tcp->u_arg[argn]); else - printstr(tcp, tcp->u_arg[argn], tcp->u_rval); + printstrn(tcp, tcp->u_arg[argn], tcp->u_rval); /* len */ tprintf(", %" PRI_klu, getarg_klu(tcp, argn + 1)); diff --git a/memfd_create.c b/memfd_create.c index 7c140772..0101f061 100644 --- a/memfd_create.c +++ b/memfd_create.c @@ -31,7 +31,7 @@ SYS_FUNC(memfd_create) { - printstr(tcp, tcp->u_arg[0], -1); + printstr(tcp, tcp->u_arg[0]); tprints(", "); printflags(memfd_create_flags, tcp->u_arg[1], "MFD_???"); diff --git a/mount.c b/mount.c index 1ae445dc..cf3afe33 100644 --- a/mount.c +++ b/mount.c @@ -65,7 +65,7 @@ SYS_FUNC(mount) if (ignore_type) printaddr(tcp->u_arg[2]); else - printstr(tcp, tcp->u_arg[2], -1); + printstr(tcp, tcp->u_arg[2]); tprints(", "); if (old_magic) { @@ -80,7 +80,7 @@ SYS_FUNC(mount) if (ignore_data) printaddr(tcp->u_arg[4]); else - printstr(tcp, tcp->u_arg[4], -1); + printstr(tcp, tcp->u_arg[4]); return RVAL_DECODED; } diff --git a/mq.c b/mq.c index c1d47ab1..f79f9400 100644 --- a/mq.c +++ b/mq.c @@ -48,7 +48,7 @@ SYS_FUNC(mq_open) SYS_FUNC(mq_timedsend) { tprintf("%d, ", (int) tcp->u_arg[0]); - printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]); + printstrn(tcp, tcp->u_arg[1], tcp->u_arg[2]); tprintf(", %" PRI_klu ", %u, ", getarg_klu(tcp, 2), (unsigned int) tcp->u_arg[3]); print_timespec(tcp, tcp->u_arg[4]); @@ -61,7 +61,7 @@ SYS_FUNC(mq_timedreceive) tprintf("%d, ", (int) tcp->u_arg[0]); } else { if (!syserror(tcp) && (tcp->u_rval >= 0)) - printstr(tcp, tcp->u_arg[1], tcp->u_rval); + printstrn(tcp, tcp->u_arg[1], tcp->u_rval); else printaddr(tcp->u_arg[1]); tprintf(", %" PRI_klu ", ", getarg_klu(tcp, 2)); diff --git a/net.c b/net.c index 57788b43..00cfd707 100644 --- a/net.c +++ b/net.c @@ -113,7 +113,7 @@ decode_sockbuf(struct tcb *const tcp, const int fd, const kernel_ureg_t addr, decode_netlink(tcp, addr, addrlen); break; default: - printstr(tcp, addr, addrlen); + printstrn(tcp, addr, addrlen); } } @@ -605,7 +605,7 @@ print_getsockopt(struct tcb *const tcp, const unsigned int level, if (len == sizeof(int)) { printnum_int(tcp, addr, "%d"); } else { - printstr(tcp, addr, len); + printstrn(tcp, addr, len); } } else { printaddr(addr); @@ -642,7 +642,7 @@ print_mreq(struct tcb *const tcp, const kernel_ureg_t addr, struct ip_mreq mreq; if (len < sizeof(mreq)) { - printstr(tcp, addr, len); + printstrn(tcp, addr, len); return; } if (umove_or_printaddr(tcp, addr, &mreq)) @@ -685,7 +685,7 @@ print_mreq6(struct tcb *const tcp, const kernel_ureg_t addr, return; fail: - printstr(tcp, addr, len); + printstrn(tcp, addr, len); } #endif /* IPV6_ADD_MEMBERSHIP */ @@ -837,7 +837,7 @@ print_setsockopt(struct tcb *const tcp, const unsigned int level, if (len == sizeof(int)) { printnum_int(tcp, addr, "%d"); } else { - printstr(tcp, addr, len); + printstrn(tcp, addr, len); } } else { printaddr(addr); diff --git a/netlink.c b/netlink.c index ebc35eac..13ff1c55 100644 --- a/netlink.c +++ b/netlink.c @@ -40,7 +40,7 @@ fetch_nlmsghdr(struct tcb *const tcp, struct nlmsghdr *const nlmsghdr, const kernel_ureg_t addr, const unsigned long len) { if (len < sizeof(struct nlmsghdr)) { - printstr(tcp, addr, len); + printstrn(tcp, addr, len); return false; } @@ -81,7 +81,7 @@ decode_nlmsghdr_with_payload(struct tcb *const tcp, if (nlmsg_len > sizeof(struct nlmsghdr)) { tprints(", "); - printstr(tcp, addr + sizeof(struct nlmsghdr), + printstrn(tcp, addr + sizeof(struct nlmsghdr), nlmsg_len - sizeof(struct nlmsghdr)); } diff --git a/prctl.c b/prctl.c index a2abfb79..ddf9a844 100644 --- a/prctl.c +++ b/prctl.c @@ -252,7 +252,7 @@ SYS_FUNC(prctl) if (arg2 == PR_SET_VMA_ANON_NAME) { tprintf(", PR_SET_VMA_ANON_NAME, %#" PRI_klx, arg3); tprintf(", %" PRI_klu ", ", arg4); - printstr(tcp, arg5, -1); + printstr(tcp, arg5); } else { /* There are no other sub-options now, but there * might be in future... */ diff --git a/print_msgbuf.c b/print_msgbuf.c index a279044b..e6fe4306 100644 --- a/print_msgbuf.c +++ b/print_msgbuf.c @@ -45,7 +45,7 @@ MPERS_PRINTER_DECL(void, tprint_msgbuf, struct tcb *const tcp, if (!umove_or_printaddr(tcp, addr, &msg)) { tprintf("{%lu, ", (long) msg.mtype); - printstr(tcp, addr + sizeof(msg.mtype), count); + printstrn(tcp, addr + sizeof(msg.mtype), count); tprints("}"); } tprintf(", %lu, ", count); diff --git a/readlink.c b/readlink.c index 299b083b..af4f319f 100644 --- a/readlink.c +++ b/readlink.c @@ -50,7 +50,7 @@ decode_readlink(struct tcb *tcp, int offset) * "..." continuation based on garbage * past return buffer's end. */ - printstr(tcp, tcp->u_arg[offset + 1], tcp->u_rval); + printstrn(tcp, tcp->u_arg[offset + 1], tcp->u_rval); tprintf(", %lu", tcp->u_arg[offset + 2]); } return 0; diff --git a/reboot.c b/reboot.c index 1669a3d1..381e4e89 100644 --- a/reboot.c +++ b/reboot.c @@ -17,7 +17,7 @@ SYS_FUNC(reboot) printflags(bootflags3, cmd, "LINUX_REBOOT_CMD_???"); if (cmd == LINUX_REBOOT_CMD_RESTART2) { tprints(", "); - printstr(tcp, tcp->u_arg[3], -1); + printstr(tcp, tcp->u_arg[3]); } return RVAL_DECODED; } diff --git a/sock.c b/sock.c index dcc3e41e..b7336f43 100644 --- a/sock.c +++ b/sock.c @@ -207,7 +207,7 @@ sock_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ureg_t a case SIOCBRADDBR: case SIOCBRDELBR: tprints(", "); - printstr(tcp, arg, -1); + printstr(tcp, arg); break; #endif diff --git a/syslog.c b/syslog.c index 6be941c6..c04f7bd9 100644 --- a/syslog.c +++ b/syslog.c @@ -70,7 +70,7 @@ SYS_FUNC(syslog) if (syserror(tcp)) printaddr(tcp->u_arg[1]); else - printstr(tcp, tcp->u_arg[1], tcp->u_rval); + printstrn(tcp, tcp->u_arg[1], tcp->u_rval); /* len */ tprintf(", %d", (int) tcp->u_arg[2]); diff --git a/term.c b/term.c index 62a2efeb..26af1237 100644 --- a/term.c +++ b/term.c @@ -275,7 +275,7 @@ term_ioctl(struct tcb *const tcp, const unsigned int code, /* ioctls with an indirect parameter displayed as a char */ case TIOCSTI: tprints(", "); - printstr(tcp, arg, 1); + printstrn(tcp, arg, 1); break; /* ioctls with no parameters */ diff --git a/v4l2.c b/v4l2.c index 922f3917..e746a1ed 100644 --- a/v4l2.c +++ b/v4l2.c @@ -668,7 +668,7 @@ print_v4l2_ext_control(struct tcb *tcp, void *elem_buf, size_t elem_size, void * tprintf(", size=%u", p->size); if (p->size > 0) { tprints(", string="); - printstr(tcp, (kernel_ureg_t) p->string, p->size); + printstrn(tcp, (kernel_ureg_t) p->string, p->size); } else # endif tprintf(", value=%d, value64=%" PRId64, p->value, (int64_t) p->value64); diff --git a/xattr.c b/xattr.c index b52c71d3..7eaefebb 100644 --- a/xattr.c +++ b/xattr.c @@ -58,7 +58,7 @@ SYS_FUNC(setxattr) { printpath(tcp, tcp->u_arg[0]); tprints(", "); - printstr(tcp, tcp->u_arg[1], -1); + printstr(tcp, tcp->u_arg[1]); print_xattr_val(tcp, tcp->u_arg[2], tcp->u_arg[3], tcp->u_arg[3]); tprints(", "); printflags(xattrflags, tcp->u_arg[4], "XATTR_???"); @@ -69,7 +69,7 @@ SYS_FUNC(fsetxattr) { printfd(tcp, tcp->u_arg[0]); tprints(", "); - printstr(tcp, tcp->u_arg[1], -1); + printstr(tcp, tcp->u_arg[1]); print_xattr_val(tcp, tcp->u_arg[2], tcp->u_arg[3], tcp->u_arg[3]); tprints(", "); printflags(xattrflags, tcp->u_arg[4], "XATTR_???"); @@ -81,7 +81,7 @@ SYS_FUNC(getxattr) if (entering(tcp)) { printpath(tcp, tcp->u_arg[0]); tprints(", "); - printstr(tcp, tcp->u_arg[1], -1); + printstr(tcp, tcp->u_arg[1]); } else { print_xattr_val(tcp, tcp->u_arg[2], tcp->u_arg[3], tcp->u_rval); } @@ -93,7 +93,7 @@ SYS_FUNC(fgetxattr) if (entering(tcp)) { printfd(tcp, tcp->u_arg[0]); tprints(", "); - printstr(tcp, tcp->u_arg[1], -1); + printstr(tcp, tcp->u_arg[1]); } else { print_xattr_val(tcp, tcp->u_arg[2], tcp->u_arg[3], tcp->u_rval); } @@ -107,7 +107,7 @@ print_xattr_list(struct tcb *const tcp, const kernel_ureg_t addr, if (!size || syserror(tcp)) { printaddr(addr); } else { - printstr(tcp, addr, tcp->u_rval); + printstrn(tcp, addr, tcp->u_rval); } tprintf(", %lu", size); } @@ -138,7 +138,7 @@ SYS_FUNC(removexattr) { printpath(tcp, tcp->u_arg[0]); tprints(", "); - printstr(tcp, tcp->u_arg[1], -1); + printstr(tcp, tcp->u_arg[1]); return RVAL_DECODED; } @@ -146,6 +146,6 @@ SYS_FUNC(fremovexattr) { printfd(tcp, tcp->u_arg[0]); tprints(", "); - printstr(tcp, tcp->u_arg[1], -1); + printstr(tcp, tcp->u_arg[1]); return RVAL_DECODED; }