X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fmisc%2Fptrace.c;h=83b8022beefa8afc9abeb19dfc7e9bac35d605e8;hb=b1b3d3525bbc50a6781f57bfe423c7e18d64f625;hp=1cc00167331c83639230cb6484e9dede5f299f41;hpb=71f7a3c2ce7377a6c77f46524002505b9454861b;p=musl diff --git a/src/misc/ptrace.c b/src/misc/ptrace.c index 1cc00167..83b8022b 100644 --- a/src/misc/ptrace.c +++ b/src/misc/ptrace.c @@ -8,11 +8,18 @@ long ptrace(int req, ...) va_list ap; pid_t pid; void *addr, *data, *addr2; + long ret, result; + va_start(ap, req); pid = va_arg(ap, pid_t); addr = va_arg(ap, void *); data = va_arg(ap, void *); addr2 = va_arg(ap, void *); va_end(ap); - return syscall(SYS_ptrace, req, pid, addr, data, addr2); + + if (req-1U < 3) data = &result; + ret = syscall(SYS_ptrace, req, pid, addr, data, addr2); + + if (ret < 0 || req-1U >= 3) return ret; + return result; }