summaryrefslogtreecommitdiffstats
path: root/tapset/conversions.stp
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2009-04-28 00:24:34 +0200
committerMark Wielaard <mjw@redhat.com>2009-04-28 00:26:52 +0200
commit193ef171ea2cb656f1fe68898d13a40caa1625c2 (patch)
treeb415075250a7a8793a5fce56f2230e672f0adfbb /tapset/conversions.stp
parent56eb845656c89a1a7027887c1b3e3dfb3aa866d7 (diff)
downloadsystemtap-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.
Diffstat (limited to 'tapset/conversions.stp')
-rw-r--r--tapset/conversions.stp5
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 */