diff options
author | Mark Wielaard <mjw@redhat.com> | 2009-04-28 00:24:34 +0200 |
---|---|---|
committer | Mark Wielaard <mjw@redhat.com> | 2009-04-28 00:26:52 +0200 |
commit | 193ef171ea2cb656f1fe68898d13a40caa1625c2 (patch) | |
tree | b415075250a7a8793a5fce56f2230e672f0adfbb | |
parent | 56eb845656c89a1a7027887c1b3e3dfb3aa866d7 (diff) | |
download | systemtap-steved-193ef171ea2cb656f1fe68898d13a40caa1625c2.tar.gz systemtap-steved-193ef171ea2cb656f1fe68898d13a40caa1625c2.tar.xz systemtap-steved-193ef171ea2cb656f1fe68898d13a40caa1625c2.zip |
Make sure user_string_n() results are always zero terminated strings.
* tapset/conversions.stp (user_string_n2): Explicitly null terminate
return string.
(user_string_n_warn): Likewise.
-rw-r--r-- | tapset/conversions.stp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/tapset/conversions.stp b/tapset/conversions.stp index 70725e9d..31b16821 100644 --- a/tapset/conversions.stp +++ b/tapset/conversions.stp @@ -120,6 +120,8 @@ function user_string_n2:string (addr:long, n:long, err_msg:string) %{ /* pure */ (char __user *) (uintptr_t) THIS->addr, len) < 0) strlcpy(THIS->__retvalue, THIS->err_msg, MAXSTRINGLEN); + else + THIS->__retvalue[len - 1] = '\0'; %} function user_string_n_warn:string (addr:long, n:long) %{ /* pure */ @@ -137,7 +139,8 @@ function user_string_n_warn:string (addr:long, n:long) %{ /* pure */ (void *) (uintptr_t) THIS->addr); _stp_warn(CONTEXT->error_buffer); strlcpy (THIS->__retvalue, "<unknown>", MAXSTRINGLEN); - } + } else + THIS->__retvalue[len - 1] = '\0'; %} function user_string_n_quoted:string (addr:long, n:long) %{ /* pure */ |