diff options
author | alfred <alfred@FreeBSD.org> | 2004-07-17 19:48:49 +0000 |
---|---|---|
committer | alfred <alfred@FreeBSD.org> | 2004-07-17 19:48:49 +0000 |
commit | f770c48d15ef2b5512bab229842e7b8501c5f89b (patch) | |
tree | 2aab56b03449877fe5d7c17ce3b50fc426abb64d /usr.bin/truss/amd64-linux32.c | |
parent | 71eccf2cf55ca05d858bd43ea8dcf26e64a94c66 (diff) | |
download | FreeBSD-src-f770c48d15ef2b5512bab229842e7b8501c5f89b.zip FreeBSD-src-f770c48d15ef2b5512bab229842e7b8501c5f89b.tar.gz |
Support readlink(2) better. Readlink does not nul terminate the
result buffer, so we need to format it ourselves. The problem is
that the length is stored as the return value from readlink, so we
need to pass the return value from our syscall into print_arg.
Motivated by: truss garbage on my screen from reading /etc/malloc.conf.
Diffstat (limited to 'usr.bin/truss/amd64-linux32.c')
-rw-r--r-- | usr.bin/truss/amd64-linux32.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/usr.bin/truss/amd64-linux32.c b/usr.bin/truss/amd64-linux32.c index 2164368..01703b5 100644 --- a/usr.bin/truss/amd64-linux32.c +++ b/usr.bin/truss/amd64-linux32.c @@ -200,7 +200,7 @@ i386_linux_syscall_entry(struct trussinfo *trussinfo, int nargs) { i < (fsc.nargs - 1) ? "," : ""); #endif if (sc && !(sc->args[i].type & OUT)) { - fsc.s_args[i] = print_arg(Procfd, &sc->args[i], fsc.args); + fsc.s_args[i] = print_arg(Procfd, &sc->args[i], fsc.args, 0); } } #if DEBUG @@ -312,7 +312,7 @@ i386_linux_syscall_exit(struct trussinfo *trussinfo, int syscall_num __unused) if (errorp) asprintf(&temp, "0x%lx", fsc.args[sc->args[i].offset]); else - temp = print_arg(Procfd, &sc->args[i], fsc.args); + temp = print_arg(Procfd, &sc->args[i], fsc.args, retval); fsc.s_args[i] = temp; } } |