aboutsummaryrefslogtreecommitdiff
path: root/keyctl.c
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2017-02-15 15:19:05 -0800
committerElliott Hughes <enh@google.com>2017-02-15 16:23:02 -0800
commitd35df493b4e7684c50d2d2fa032ee3a7ac228009 (patch)
tree389a89297d98da7bd3dcc4e4f8b1df69ea85bba0 /keyctl.c
parentee18e8ae76b0828006d07262ed6085dca9fd08c1 (diff)
downloadstrace-d35df493b4e7684c50d2d2fa032ee3a7ac228009.tar.gz
Upgrade strace to 4.16 from 4.14.
Noteworthy changes in release 4.16 (2017-02-14) * Improvements * Implemented syscall return value injection (-e inject=SET:retval= option). * Implemented signal injection (-e inject=SET:signal= option). * Implemented decoding of SUID_DUMP_* constants in PR_[GS]ET_DUMPABLE. * Implemented decoding of all SG_* ioctl commands. * Implemented decoding of ustat syscall. * Implemented decoding of BPF_OBJ_PIN, BPF_OBJ_GET, BPF_PROG_ATTACH, and BPF_PROG_DETACH commands of bpf syscall. * Enhanced decoding of sg_io_hdr and sg_io_v4 structures. * Enhanced decoding of get_robust_list, getrandom, io_submit, set_robust_list syscalls. * Enhanced decoding of entities of kernel long type on x32 and mips n32 ABIs. * Updated lists of IP_*, IPV6_*, and LOOP_* constants. * Updated lists of ioctl commands from Linux 4.10. * Added decoding of recently added syscalls on avr32, microblaze, ppc, and ppc64. * Bug fixes * Fixed pathmatch of oldselect syscall on 64-bit architectures. * Fixed decoding of mmap2 syscall on s390 when arguments are not available. * Fixed decoding of kexec_file_load, mprotect, pkey_mprotect, prctl, preadv*, and pwritev* syscalls on x32. * Fixed printing of string arguments of getxattr and setxattr syscalls when -s option is used to limit the printed string size. * Fixed decoding of ifconf, ifreq, and loop_info structures on non-native personalities. * Fixed decoding of SG_* and LOOP_* ioctl commands. * Fixed build on mips with musl libc. * Fixed cross-building of ioctlsort. * Applied minor formatting fixes to the manual page. Noteworthy changes in release 4.15 (2016-12-14) * Changes in behavior * Time stamps are now printed according to ISO 8601. * Changed output format of val3 parameter of futex FUTEX_WAKE_OP operation. * The last argument of mincore, sched_getaffinity, and sched_setaffinity syscalls is now formatted as an array. * Improvements * Implemented syscall fault injection (-e fault=... option). * Implemented decoding of DM_* ioctl commands. * Implemented decoding of attr parameter of perf_event_open syscall. * Implemented decoding of pkey_alloc, pkey_free, and pkey_mprotect syscalls. * Implemented dumping of mq_timedsend and mq_timedreceive syscalls. * Implemented decoding of PR_SET_FP_MODE and PR_GET_FP_MODE operations of prctl syscall. * Implemented PTRACE_GETREGS API support on m68k. * Updated lists of ARCH_*, BPF_*, BTRFS_*, FALLOC_*, MS_*, *_MAGIC, and V4L2_* constants. * Updated lists of ioctl commands from Linux 4.9. * Added decoding of recently added syscalls on arc, x32, and xtensa. * Enhanced manual page. * Bug fixes * Fixed corner cases in decoding of exit, exit_group, futimesat, getgroups, getresuid, init_module, inotify_init1, kcmp, kexec_load, lookup_dcookie, mq_getsetattr, mq_notify, mq_open, mq_timedreceive, mq_timedsend, name_to_handle_at, prctl, process_vm_readv, process_vm_writev, setfsuid, setgroups, setns, unshare, and utimes syscalls. * Fixed handling of verbose flag in printing of controls array of struct v4l2_ext_controls. * Fixed omission of field names in the output of capability, sigaction, sigevent, statfs, timespec, timeval, and utimbuf structures. * Fixed printing of unknown syscalls in siginfo structure. * Fixed decoding of ioctl constants on m68k. * Fixed cris architecture support. * Fixed cross build when host compiler does not support the same set of warning flags as the cross compiler. * Fixed build on SLE10 and SLE11. Bug: N/A Test: manual Change-Id: I590bf5db1652aa1dfdc0eb16e30fd97c82af2261
Diffstat (limited to 'keyctl.c')
-rw-r--r--keyctl.c39
1 files changed, 20 insertions, 19 deletions
diff --git a/keyctl.c b/keyctl.c
index 7f047c6bf..c270221ff 100644
--- a/keyctl.c
+++ b/keyctl.c
@@ -26,7 +26,6 @@
*/
#include "defs.h"
-#include "kernel_types.h"
typedef int32_t key_serial_t;
@@ -52,15 +51,15 @@ 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]);
+ tprintf(", %" PRI_klu ", ", tcp->u_arg[3]);
/* keyring serial number */
print_keyring_serial_number(tcp->u_arg[4]);
@@ -70,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]);
@@ -97,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));
}
@@ -136,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);
}
@@ -158,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);
}
@@ -257,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));
}
@@ -269,10 +268,10 @@ keyctl_dh_compute(struct tcb *tcp, kernel_ulong_t params, kernel_ulong_t buf,
SYS_FUNC(keyctl)
{
int cmd = tcp->u_arg[0];
- unsigned long long arg2 = getarg_ull(tcp, 1);
- unsigned long long arg3 = getarg_ull(tcp, 2);
- unsigned long long arg4 = getarg_ull(tcp, 3);
- unsigned long long arg5 = getarg_ull(tcp, 4);
+ kernel_ulong_t arg2 = tcp->u_arg[1];
+ kernel_ulong_t arg3 = tcp->u_arg[2];
+ kernel_ulong_t arg4 = tcp->u_arg[3];
+ kernel_ulong_t arg5 = tcp->u_arg[4];
if (entering(tcp)) {
printxval(keyctl_commands, cmd, "KEYCTL_???");
@@ -291,7 +290,7 @@ SYS_FUNC(keyctl)
break;
case KEYCTL_JOIN_SESSION_KEYRING:
- printstr(tcp, arg2, -1);
+ printstr(tcp, arg2);
break;
case KEYCTL_UPDATE:
@@ -364,7 +363,9 @@ SYS_FUNC(keyctl)
return 0;
default:
- tprintf("%#llx, %#llx, %#llx, %#llx", arg2, arg3, arg4, arg5);
+ tprintf("%#" PRI_klx ", %#" PRI_klx
+ ", %#" PRI_klx ", %#" PRI_klx,
+ arg2, arg3, arg4, arg5);
break;
}