From 694605b44cd3574bc0b66d0d4a4fa4f3bc7727a3 Mon Sep 17 00:00:00 2001 From: hunt Date: Wed, 1 Feb 2006 20:21:27 +0000 Subject: 2006-02-01 Martin Hunt * syscalls.stp: New syscall file. * syscall2.stp: More syscalls. * i686/syscalls.stp: x86-specific calls. * x86_64/syscalls.stp: x86_64-specific calls. --- tapset/conversions.stp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'tapset/conversions.stp') diff --git a/tapset/conversions.stp b/tapset/conversions.stp index 51f9de19..9d50ca62 100644 --- a/tapset/conversions.stp +++ b/tapset/conversions.stp @@ -41,3 +41,19 @@ function user_string:string (addr:long) %{ CONTEXT->last_error = errmsg; } %} + +function user_string_safe:string (addr:long, n:long) %{ + long rc; + if (n > MAXSTRINGLEN) + n = MAXSTRINGLEN; + rc = _stp_strncpy_from_user (THIS->__retvalue, + (const char __user*) (uintptr_t) THIS->addr, + MAXSTRINGLEN); + if (rc < 0) + { + static char errmsg[40]; + snprintf (errmsg, 40, "user string copy fault at 0x%p", + (void *) (uintptr_t) THIS->addr); + CONTEXT->last_error = errmsg; + } +%} -- cgit