From mboxrd@z Thu Jan 1 00:00:00 1970
From: bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r@public.gmane.org
Subject: [Bug 70801] ptrace PEEKDATA API is incorrect
Date: Tue, 18 Feb 2014 22:37:00 +0000
Message-ID:
References:
Mime-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Return-path:
In-Reply-To:
Sender: linux-man-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
To: linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
List-Id: linux-man@vger.kernel.org
https://bugzilla.kernel.org/show_bug.cgi?id=70801
Mike Frysinger changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org
--- Comment #1 from Mike Frysinger ---
it depends entirely on the arch. a bunch do as the man page describes. the
generic ptrace layer is not used by a bunch.
for example alpha/kernel/ptrace.c:
case PTRACE_PEEKTEXT: /* read word at location addr. */
case PTRACE_PEEKDATA:
copied = access_process_vm(child, addr, &tmp, sizeof(tmp), 0);
ret = -EIO;
if (copied != sizeof(tmp))
break;
force_successful_syscall_return();
ret = tmp;
break;
or ia64/kernel/ptrace.c:
case PTRACE_PEEKTEXT:
case PTRACE_PEEKDATA:
/* read word at location addr */
if (access_process_vm(child, addr, &data, sizeof(data), 0)
!= sizeof(data))
return -EIO;
/* ensure return value is not mistaken for error code */
force_successful_syscall_return();
return data;
it's the API that strace uses:
strace/util.c:
u.val = ptrace(PTRACE_PEEKDATA, pid, (char *) addr, 0);
the generic glibc ignores it too:
glibc/misc/ptrace.c:
case PTRACE_PEEKDATA:
va_start(ap, request);
pid = va_arg(ap, pid_t);
addr = va_arg(ap, void *);
va_end(ap);
break;
although apparently glibc's linux layer has been rewriting this silently:
if (request > 0 && request < 4)
data = &ret;
...
if (res >= 0 && request > 0 && request < 4)
{
__set_errno (0);
return ret;
}
where request {1,2,3} are PTRACE_PEEK{TEXT,DATA,USER}
as mentioned before, the man page is geared towards documenting the C library
interface rather than the syscall one. so the current docs are correct. this
could use noting in the NOTES section.
--
You are receiving this mail because:
You are watching the assignee of the bug.
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html