diff options
author | hunt <hunt> | 2006-02-01 20:21:27 +0000 |
---|---|---|
committer | hunt <hunt> | 2006-02-01 20:21:27 +0000 |
commit | 694605b44cd3574bc0b66d0d4a4fa4f3bc7727a3 (patch) | |
tree | 169d2b2f8371ff43428be8742cc36b314add05bc /tapset/conversions.stp | |
parent | ea18b5569264daa83c5ad8760a6dfd92180e9b22 (diff) | |
download | systemtap-steved-694605b44cd3574bc0b66d0d4a4fa4f3bc7727a3.tar.gz systemtap-steved-694605b44cd3574bc0b66d0d4a4fa4f3bc7727a3.tar.xz systemtap-steved-694605b44cd3574bc0b66d0d4a4fa4f3bc7727a3.zip |
2006-02-01 Martin Hunt <hunt@redhat.com>
* syscalls.stp: New syscall file.
* syscall2.stp: More syscalls.
* i686/syscalls.stp: x86-specific calls.
* x86_64/syscalls.stp: x86_64-specific calls.
Diffstat (limited to 'tapset/conversions.stp')
-rw-r--r-- | tapset/conversions.stp | 16 |
1 files changed, 16 insertions, 0 deletions
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; + } +%} |