diff options
author | hunt <hunt> | 2006-07-04 10:06:21 +0000 |
---|---|---|
committer | hunt <hunt> | 2006-07-04 10:06:21 +0000 |
commit | 4f4a5ea455348a92ea6294fc1bdb32981f9e6c21 (patch) | |
tree | feac23b540b530e9fa01d29a3b3a255e1d866cd7 | |
parent | fb77d02e478a871acbb8b82ce7bff8c6979e5821 (diff) | |
download | systemtap-steved-4f4a5ea455348a92ea6294fc1bdb32981f9e6c21.tar.gz systemtap-steved-4f4a5ea455348a92ea6294fc1bdb32981f9e6c21.tar.xz systemtap-steved-4f4a5ea455348a92ea6294fc1bdb32981f9e6c21.zip |
2006-07-04 Martin Hunt <hunt@redhat.com>
* syscalls.stp, syscalls2.stp: Use user_string_quoted().
-rw-r--r-- | tapset/ChangeLog | 4 | ||||
-rw-r--r-- | tapset/conversions.stp | 13 | ||||
-rw-r--r-- | tapset/syscalls.stp | 46 | ||||
-rw-r--r-- | tapset/syscalls2.stp | 66 |
4 files changed, 81 insertions, 48 deletions
diff --git a/tapset/ChangeLog b/tapset/ChangeLog index 3c87534f..bdf22333 100644 --- a/tapset/ChangeLog +++ b/tapset/ChangeLog @@ -1,3 +1,7 @@ +2006-07-04 Martin Hunt <hunt@redhat.com> + + * syscalls.stp, syscalls2.stp: Use user_string_quoted(). + 2006-07-04 Li Guanglei <guanglei@cn.ibm.com> * syscalls.stp, syscalls2.stp, ppc64/syscalls.stp: diff --git a/tapset/conversions.stp b/tapset/conversions.stp index 78e936aa..96c7162a 100644 --- a/tapset/conversions.stp +++ b/tapset/conversions.stp @@ -49,3 +49,16 @@ function user_string_warn:string (addr:long) %{ /* pure */ strlcpy (THIS->__retvalue, "<unknown>", MAXSTRINGLEN); } %} + +function user_string_quoted:string (addr:long) %{ /* pure */ + if (THIS->addr == 0) + strlcpy (THIS->__retvalue, "NULL", MAXSTRINGLEN); + else { + *THIS->__retvalue = '\"'; + if (_stp_strncpy_from_user (THIS->__retvalue+1, + (const char __user*) (uintptr_t) THIS->addr, MAXSTRINGLEN-2) < 0) + strlcpy (THIS->__retvalue, "<unknown>", MAXSTRINGLEN); + else + strlcat(THIS->__retvalue, "\"", MAXSTRINGLEN); + } +%} diff --git a/tapset/syscalls.stp b/tapset/syscalls.stp index 06e88e17..0d4f85bd 100644 --- a/tapset/syscalls.stp +++ b/tapset/syscalls.stp @@ -44,7 +44,7 @@ probe syscall.access = kernel.function("sys_access") { pathname = user_string($filename) mode = $mode mode_str = _access_mode_str($mode) - argstr = sprintf("\"%s\", %s", pathname, mode_str) + argstr = sprintf("%s, %s", user_string_quoted($filename), mode_str) } probe syscall.access.return = kernel.function("sys_access").return { name = "access" @@ -183,7 +183,7 @@ probe syscall.capset.return = kernel.function("sys_capset").return { probe syscall.chdir = kernel.function("sys_chdir") { name = "chdir" path = user_string($filename) - argstr = sprintf("\"%s\"",path) + argstr = user_string_quoted($filename) } probe syscall.chdir.return = kernel.function("sys_chdir").return { name = "chdir" @@ -196,7 +196,7 @@ probe syscall.chmod = kernel.function("sys_chmod") { name = "chmod" path = user_string($filename) mode = $mode - argstr = sprintf("%s, %#o", path, mode) + argstr = sprintf("%s, %#o", user_string_quoted($filename), mode) } probe syscall.chmod.return = kernel.function("sys_chmod").return { name = "chmod" @@ -210,7 +210,7 @@ probe syscall.chown = kernel.function("sys_chown") { path = user_string($filename) owner = $user group = $group - argstr = sprintf("\"%s\", %d, %d",path, owner, group) + argstr = sprintf("%s, %d, %d",user_string_quoted($filename), owner, group) } probe syscall.chown.return = kernel.function("sys_chown").return { name = "chown" @@ -225,7 +225,7 @@ probe syscall.chown16 = kernel.function("sys_chown16") ? { path = user_string($filename) owner = __short($user) group = __short($group) - argstr = sprintf("\"%s\", %d, %d", path, owner, group) + argstr = sprintf("%s, %d, %d", user_string_quoted($filename), owner, group) } probe syscall.chown16.return = kernel.function("sys_chown16").return ? { name = "chown16" @@ -237,7 +237,7 @@ probe syscall.chown16.return = kernel.function("sys_chown16").return ? { probe syscall.chroot = kernel.function("sys_chroot") { name = "chroot" path = user_string($filename) - argstr = path + argstr = user_string_quoted($filename) } probe syscall.chroot.return = kernel.function("sys_chroot").return { name = "chroot" @@ -342,7 +342,7 @@ probe syscall.delete_module = kernel.function("sys_delete_module") { name = "delete_module" name_user = user_string($name_user) flags = $flags - argstr = sprintf("%s, %s", name_user, _module_flags_str(flags)) + argstr = sprintf("%s, %s", user_string_quoted($name_user), _module_flags_str(flags)) } probe syscall.delete_module.return = kernel.function("sys_delete_module").return { name = "delete_module" @@ -601,8 +601,7 @@ probe syscall.fgetxattr = kernel.function("sys_fgetxattr") { name2 = user_string($name) value_uaddr = $value size = $size - argstr = sprintf("%d, %s, [%p], %d", filedes, name2, - value_uaddr, size) + argstr = sprintf("%d, %s, [%p], %d", filedes, user_string_quoted($name), value_uaddr, size) } probe syscall.fgetxattr.return = kernel.function("sys_fgetxattr").return { name = "fgetxattr" @@ -696,8 +695,7 @@ probe syscall.fsetxattr = kernel.function("sys_fsetxattr") { value_uaddr = $value size = $size flags = $flags - argstr = sprintf("%d, %s, [%p], %d, %p", filedes, name2, - value_uaddr, size, flags) + argstr = sprintf("%d, %s, [%p], %d, %p", filedes, user_string_quoted($name), value_uaddr, size, flags) } probe syscall.fsetxattr.return = kernel.function("sys_fsetxattr").return { name = "fsetxattr" @@ -1234,7 +1232,9 @@ probe syscall.getxattr = kernel.function("sys_getxattr") { name2 = user_string($name) value_uaddr = $value size = $size - argstr = sprintf("%s, %s, [%p], %d", path, name2, + argstr = sprintf("%s, %s, [%p], %d", + user_string_quoted($path), + user_string_quoted($name), value_uaddr, size) } probe syscall.getxattr.return = kernel.function("sys_getxattr").return { @@ -1447,7 +1447,7 @@ probe syscall.lchown = kernel.function("sys_lchown") { path = user_string($filename) owner = $user group = $group - argstr = sprintf("\"%s\", %d, %d",path, owner, group) + argstr = sprintf("%s, %d, %d",user_string_quoted($filename), owner, group) } probe syscall.lchown.return = kernel.function("sys_lchown").return { name = "lchown" @@ -1463,7 +1463,7 @@ probe syscall.lchown16 = kernel.function("sys_lchown16") ? { path = user_string($filename) owner = __short($user) group = __short($group) - argstr = sprintf("\"%s\", %d, %d", path, owner, group) + argstr = sprintf("%s, %d, %d", user_string_quoted($filename), owner, group) } probe syscall.lchown16.return = kernel.function("sys_lchown16").return ? { name = "lchown16" @@ -1496,7 +1496,9 @@ probe syscall.link = kernel.function("sys_link") { name = "link" oldpath = user_string($oldname) newpath = user_string($newname) - argstr = sprintf("\"%s\", \"%s\"", oldpath, newpath) + argstr = sprintf("%s, %s", + user_string_quoted($oldname), + user_string_quoted($newname)) } probe syscall.link.return = kernel.function("sys_link").return { name = "link" @@ -1652,7 +1654,7 @@ probe syscall.lstat = name = "lstat" file_name = user_string($filename) buf_uaddr = $statbuf - argstr = sprintf("\"%s\", [%p]", file_name, buf_uaddr) + argstr = sprintf("%s, [%p]", user_string_quoted($filename), buf_uaddr) } probe syscall.lstat.return = kernel.function("sys_lstat").return ? @@ -1706,7 +1708,7 @@ probe syscall.mkdir = kernel.function("sys_mkdir") { pathname_uaddr = $pathname pathname = user_string($pathname) mode = $mode - argstr = sprintf("\"%s\", %#o", pathname, $mode) + argstr = sprintf("%s, %#o", user_string_quoted($pathname), $mode) } probe syscall.mkdir.return = kernel.function("sys_mkdir").return { name = "mkdir" @@ -1721,7 +1723,7 @@ probe syscall.mkdirat = kernel.function("sys_mkdirat") ? { dirfd = $dfd pathname = user_string($pathname) mode = $mode - argstr = sprintf("%d, \"%s\", %#o", $dfd, pathname, $mode) + argstr = sprintf("%d, %s, %#o", $dfd, user_string_quoted($pathname), $mode) } probe syscall.mkdirat.return = kernel.function("sys_mkdirat").return ? { name = "mkdirat" @@ -1735,7 +1737,7 @@ probe syscall.mknod = kernel.function("sys_mknod") { pathname = user_string($filename) mode = $mode dev = $dev - argstr = sprintf("%s, %s, %p", pathname, _mknod_mode_str($mode), dev) + argstr = sprintf("%s, %s, %p", user_string_quoted($filename), _mknod_mode_str($mode), dev) } probe syscall.mknod.return = kernel.function("sys_mknod").return { @@ -1852,7 +1854,11 @@ probe syscall.mount = kernel.function("sys_mount") { mountflags = $flags mountflags_str = _mountflags_str($flags) data = text_strn(user_string($data),30,1) - argstr = sprintf("\"%s\", \"%s\", \"%s\", %s, %s", source, target, filesystemtype, mountflags_str, data) + argstr = sprintf("%s, %s, %s, %s, %s", + user_string_quoted($dev_name), + user_string_quoted($dir_name), + user_string_quoted($type), + mountflags_str, data) } probe syscall.mount.return = kernel.function("sys_mount").return { name = "mount" diff --git a/tapset/syscalls2.stp b/tapset/syscalls2.stp index 7d4a7c68..1e39c7e0 100644 --- a/tapset/syscalls2.stp +++ b/tapset/syscalls2.stp @@ -22,15 +22,14 @@ # nanosleep __________________________________________________ # -# asmlinkage long -# sys_nanosleep(struct timespec __user *rqtp, +# long sys_nanosleep(struct timespec __user *rqtp, # struct timespec __user *rmtp) # probe syscall.nanosleep = kernel.function("sys_nanosleep") { name = "nanosleep" req_uaddr = $rqtp rem_uaddr = $rmtp - argstr = _struct_timespec_u(req_uaddr) + argstr = sprintf("%s, %p", _struct_timespec_u(req_uaddr), $rmtp) } probe syscall.nanosleep.return = kernel.function("sys_nanosleep").return { name = "nanosleep" @@ -46,7 +45,8 @@ probe syscall.newlstat = kernel.function("sys_newlstat") ?, name = "newlstat" pathname = user_string($filename) buf_uaddr = $statbuf - argstr = sprintf("\"%s\", [%p]", pathname, buf_uaddr) + argstr = sprintf("%s, [%p]", + user_string_quoted($filename), buf_uaddr) } probe syscall.newlstat.return = kernel.function("sys_newlstat").return ?, kernel.function("compat_sys_newlstat").return ? { @@ -62,7 +62,7 @@ probe syscall.newstat = kernel.function("sys_newstat") { name = "stat" pathname = user_string($filename) buf_uaddr = $statbuf - argstr = sprintf("\"%s\", [%p]", pathname, buf_uaddr) + argstr = sprintf("%s, [%p]", user_string_quoted($filename), buf_uaddr) } probe syscall.newstat.return = kernel.function("sys_newstat").return { name = "stat" @@ -156,9 +156,11 @@ probe syscall.open = flags = $flags mode = $mode if (flags & 64) - argstr = sprintf("\"%s\", %s, %#o", filename, _sys_open_flag_str(flags), mode) + argstr = sprintf("%s, %s, %#o", user_string_quoted($filename), + _sys_open_flag_str($flags), $mode) else - argstr = sprintf("\"%s\", %s", filename, _sys_open_flag_str(flags)) + argstr = sprintf("%s, %s", user_string_quoted($filename), + _sys_open_flag_str($flags)) } probe syscall.open.return = kernel.function("sys_open").return ?, @@ -288,7 +290,8 @@ probe syscall.pivot_root = kernel.function("sys_pivot_root") { name = "pivot_root" new_root_str = user_string($new_root) old_root_str = user_string($put_old) - argstr = sprintf("%s, %s", new_root_str, old_root_str) + argstr = sprintf("%s, %s", user_string_quoted($new_root), + user_string_quoted($put_old)) } probe syscall.pivot_root.return = kernel.function("sys_pivot_root").return { name = "pivot_root" @@ -446,7 +449,8 @@ probe syscall.readlink = kernel.function("sys_readlink") { path = user_string($path) buf_uaddr = $buf bufsiz = $bufsiz - argstr = sprintf("\"%s\", [%p], %d", path, buf_uaddr, bufsiz) + argstr = sprintf("%s, [%p], %d", user_string_quoted($path), + buf_uaddr, bufsiz) } probe syscall.readlink.return = kernel.function("sys_readlink").return { name = "readlink" @@ -606,7 +610,8 @@ probe syscall.removexattr = kernel.function("sys_removexattr") { name = "removexattr" path = user_string($path) name_str = user_string($name) - argstr = sprintf("%s, %s", path, name_str) + argstr = sprintf("%s, %s", user_string_quoted($path), + user_string_quoted($name)) } probe syscall.removexattr.return = kernel.function("sys_removexattr").return { name = "removexattr" @@ -622,7 +627,8 @@ probe syscall.rename = kernel.function("sys_rename") { name = "rename" oldpath = user_string($oldname) newpath = user_string($newname) - argstr = sprintf("%s, %s", oldpath, newpath) + argstr = sprintf("%s, %s", user_string_quoted($oldname), + user_string_quoted($newname)) } probe syscall.rename.return = kernel.function("sys_rename").return { name = "rename" @@ -650,7 +656,7 @@ probe syscall.restart_syscall.return = probe syscall.rmdir = kernel.function("sys_rmdir") { name = "rmdir" pathname = user_string($pathname) - argstr = pathname + argstr = user_string_quoted($pathname) } probe syscall.rmdir.return = kernel.function("sys_rmdir").return { name = "rmdir" @@ -1209,7 +1215,7 @@ probe syscall.sethostname = kernel.function("sys_sethostname") { hostname_uaddr = $name name_str = user_string($name) len = $len - argstr = sprintf("%s, %d", name_str, $len) + argstr = sprintf("%s, %d", user_string_quoted($name), $len) } probe syscall.sethostname.return = kernel.function("sys_sethostname").return { name = "sethostname" @@ -1528,8 +1534,10 @@ probe syscall.setxattr = kernel.function("sys_setxattr") { value_uaddr = $value size = $size flags = $flags - argstr = sprintf("%s, %s, [%p], %d, %d", path, name_str, value_uaddr, - $size, $flags) + argstr = sprintf("%s, %s, [%p], %d, %d", + user_string_quoted($path), + user_string_quoted($name), + value_uaddr, $size, $flags) } probe syscall.setxattr.return = kernel.function("sys_setxattr").return { name = "setxattr" @@ -1775,7 +1783,7 @@ probe syscall.stat = filename_uaddr = $filename filename = user_string($filename) buf_uaddr = $statbuf - argstr = sprintf("%s, [%p]", filename, buf_uaddr) + argstr = sprintf("%s, [%p]", user_string_quoted($filename), buf_uaddr) } probe syscall.stat.return = kernel.function("sys_stat").return ?, @@ -1792,7 +1800,7 @@ probe syscall.statfs = kernel.function("sys_statfs") { name = "statfs" path = user_string($path) buf_uaddr = $buf - argstr = sprintf("\"%s\", [%p]", path, $buf) + argstr = sprintf("%s, [%p]", user_string_quoted($path), $buf) } probe syscall.statfs.return = kernel.function("sys_statfs").return { name = "statfs" @@ -1810,7 +1818,7 @@ probe syscall.statfs64 = kernel.function("sys_statfs64") { path = user_string($path) sz = $sz buf_uaddr = $buf - argstr = sprintf("%s, %d, [%p]", path, $sz, $buf) + argstr = sprintf("%s, %d, [%p]", user_string_quoted($path), $sz, $buf) } probe syscall.statfs64.return = kernel.function("sys_statfs64").return { name = "statfs64" @@ -1840,7 +1848,7 @@ probe syscall.stime.return = kernel.function("sys_stime").return { probe syscall.swapoff = kernel.function("sys_swapoff") { name = "swapoff" path = user_string($specialfile) - argstr = sprintf("%s", path) + argstr = user_string_quoted($specialfile) } probe syscall.swapoff.return = kernel.function("sys_swapoff").return { name = "swapoff" @@ -1856,7 +1864,7 @@ probe syscall.swapon = kernel.function("sys_swapon") { name = "swapon" path = user_string($specialfile) swapflags = $swap_flags - argstr = sprintf("%s, %d", path, swapflags) + argstr = sprintf("%s, %d", user_string_quoted($specialfile), swapflags) } probe syscall.swapon.return = kernel.function("sys_swapon").return { name = "swapon" @@ -1869,7 +1877,8 @@ probe syscall.symlink = kernel.function("sys_symlink") { name = "symlink" oldpath = user_string($oldname) newpath = user_string($newname) - argstr = sprintf("\"%s\", \"%s\"", oldpath, newpath) + argstr = sprintf("%s, %s", user_string_quoted($oldname), + user_string_quoted($newname)) } probe syscall.symlink.return = kernel.function("sys_symlink").return { name = "symlink" @@ -2129,7 +2138,7 @@ probe syscall.truncate = kernel.function("sys_truncate")?, kernel.function("sys_ path_uaddr = $path path = user_string($path) length = $length - argstr = sprintf("\"%s\", %d", path, $length) + argstr = sprintf("%s, %d", user_string_quoted($path), $length) } probe syscall.truncate.return = kernel.function("sys_truncate").return ?, kernel.function("sys_truncate64").return ? { name = "truncate" @@ -2144,7 +2153,7 @@ probe syscall.umount = kernel.function("sys_umount") { target = user_string($name) flags = $flags flags_str = _umountflags_str($flags) - argstr = sprintf("\"%s\", %s", target, flags_str) + argstr = sprintf("%s, %s", user_string_quoted($name), flags_str) } probe syscall.umount.return = kernel.function("sys_umount").return { name = "umount" @@ -2159,7 +2168,7 @@ probe syscall.uname = kernel.function("sys_uname") { name = "uname" name_uaddr = $name name_str = user_string($name) - argstr = name_str + argstr = user_string_quoted($name) } probe syscall.uname.return = kernel.function("sys_uname").return { name = "uname" @@ -2172,7 +2181,7 @@ probe syscall.unlink = kernel.function("sys_unlink") { name = "unlink" pathname_uaddr = $pathname pathname = user_string($pathname) - argstr = sprintf("\"%s\"",pathname) + argstr = user_string_quoted($pathname) } probe syscall.unlink.return = kernel.function("sys_unlink").return { name = "unlink" @@ -2187,7 +2196,7 @@ probe syscall.uselib = kernel.function("sys_uselib") { name = "uselib" library_uaddr = $library library = user_string($library) - argstr = library + argstr = user_string_quoted($library) } probe syscall.uselib.return = kernel.function("sys_uselib").return { name = "uselib" @@ -2216,7 +2225,7 @@ probe syscall.utime = kernel.function("sys_utime") { filename = user_string($filename) buf_uaddr = $times buf_str = _struct_utimbuf_u($times) - argstr = sprintf("\"%s\", [%s]", filename, buf_str) + argstr = sprintf("%s, [%s]", user_string_quoted($filename), buf_str) } probe syscall.utime.return = kernel.function("sys_utime").return { name = "utime" @@ -2233,7 +2242,8 @@ probe syscall.utimes = kernel.function("sys_utimes") { filename_uaddr = $filename filename = user_string($filename) tvp_uaddr = $utimes - argstr = sprintf("%s, %s", filename, _struct_timeval_u($utimes)) + argstr = sprintf("%s, %s", user_string_quoted($filename), + _struct_timeval_u($utimes)) } probe syscall.utimes.return = kernel.function("sys_utimes").return { name = "utimes" |