Fix decoding of 16-bit *chown and [gs]et*[gu]id syscalls
authorDmitry V. Levin <ldv@altlinux.org>
Sat, 13 Dec 2014 21:49:01 +0000 (21:49 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Tue, 16 Dec 2014 01:07:12 +0000 (01:07 +0000)
Define two sets of parsers on architectures that support (either
directly or via multiarch) 16-bit and 32-bit uid/gid syscalls
simultaneously.  Since the code in these two sets is essentially
the same and the key difference between them is the size of uid_t,
implement it by parametrizing uid_t and names of parser functions.

* defs.h (NEED_UID16_PARSERS): New macro.
* linux/syscall.h [NEED_UID16_PARSERS] (sys_chown16, sys_fchown16,
sys_getresuid16, sys_getuid16, sys_setfsuid16, sys_setresuid16,
sys_setreuid16, sys_setuid16): New prototypes.
* linux/dummy.h (sys_geteuid16): Alias to sys_getuid16.
(sys_getegid16, sys_getgid16, sys_getresgid16, sys_setfsgid16,
sys_setgid16, sys_setregid16, sys_setresgid16): Alias to corresponding
sys_*uid16 functions.
* uid.c: Stop including <asm/posix_types.h>.
Parametrize uid_t and names of all exported functions.
(get_print_uid): New function.
(sys_getresuid): Use it.
(printuid): Check for (uid_t) -1.
* uid16.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* linux/arm/syscallent.h: Use sys_chown16, sys_fchown16, sys_getegid16,
sys_geteuid16, sys_getgid16, sys_getresgid16, sys_getresuid16,
sys_getuid16, sys_setfsgid16, sys_setfsuid16, sys_setgid16,
sys_setregid16, sys_setresgid16, sys_setresuid16, sys_setreuid16,
and sys_setuid16 parsers for *chown and [gs]et*[gu]id syscall entries.
* linux/bfin/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/microblaze/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/sh64/syscallent.h: Likewise.
* tests/uid16.c: New file.
* tests/uid16.test: New test.
* tests/Makefile.am (CHECK_PROGRAMS): Add uid16.
(TESTS): Add uid16.test.
* tests/.gitignore: Add uid16.

19 files changed:
Makefile.am
defs.h
linux/arm/syscallent.h
linux/bfin/syscallent.h
linux/dummy.h
linux/i386/syscallent.h
linux/m68k/syscallent.h
linux/microblaze/syscallent.h
linux/s390/syscallent.h
linux/sh/syscallent.h
linux/sh64/syscallent.h
linux/sparc/syscallent.h
linux/syscall.h
tests/.gitignore
tests/Makefile.am
tests/uid16.c [new file with mode: 0644]
tests/uid16.test [new file with mode: 0755]
uid.c
uid16.c [new file with mode: 0644]

index d2864e30d8922ba77b34c05adb90bb02d0351e89..a89817cdc745e6ad200cdfc3581b5c7915fcc935 100644 (file)
@@ -94,6 +94,7 @@ strace_SOURCES =      \
        time.c          \
        truncate.c      \
        uid.c           \
+       uid16.c         \
        umask.c         \
        umount.c        \
        uname.c         \
diff --git a/defs.h b/defs.h
index 92b35723fcd98743615d7036df6d56468a1794c2..0958d703d8f9b412597a205b88e669295ff47c86 100644 (file)
--- a/defs.h
+++ b/defs.h
@@ -549,6 +549,20 @@ extern const struct xlat whence_codes[];
 #define STACKTRACE_INVALIDATE_CACHE 0400  /* Trigger proc/maps cache updating */
 #define STACKTRACE_CAPTURE_ON_ENTER 01000 /* Capture stacktrace on "entering" stage */
 
+#if defined(ARM) || defined(AARCH64) \
+ || defined(I386) || defined(X32) || defined(X86_64) \
+ || defined(BFIN) \
+ || defined(M68K) \
+ || defined(MICROBLAZE) \
+ || defined(S390) \
+ || defined(SH) || defined(SH64) \
+ || defined(SPARC) || defined(SPARC64) \
+ /**/
+# define NEED_UID16_PARSERS 1
+#else
+# define NEED_UID16_PARSERS 0
+#endif
+
 typedef enum {
        CFLAG_NONE = 0,
        CFLAG_ONLY_STATS,
index adaa1722a89c39d19b741ce5aa217289b91390fe..0436a5134540a7a2cae51d5e78ecdfdf24a6d439 100644 (file)
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
        { 2,    TF,     sys_chmod,              "chmod"         }, /* 15 */
-       { 3,    TF,     sys_chown,              "lchown"        }, /* 16 */
+       { 3,    TF,     sys_chown16,            "lchown"        }, /* 16 */
        { 0,    TM,     sys_break,              "break"         }, /* 17 */
        { 2,    TF,     sys_oldstat,            "oldstat"       }, /* 18 */
        { 3,    TD,     sys_lseek,              "lseek"         }, /* 19 */
        { 0,    0,      sys_getpid,             "getpid"        }, /* 20 */
        { 5,    TF,     sys_mount,              "mount"         }, /* 21 */
        { 1,    TF,     sys_umount,             "oldumount"     }, /* 22 */
-       { 1,    0,      sys_setuid,             "setuid"        }, /* 23 */
-       { 0,    NF,     sys_getuid,             "getuid"        }, /* 24 */
+       { 1,    0,      sys_setuid16,           "setuid"        }, /* 23 */
+       { 0,    NF,     sys_getuid16,           "getuid"        }, /* 24 */
        { 1,    0,      sys_stime,              "stime"         }, /* 25 */
        { 4,    0,      sys_ptrace,             "ptrace"        }, /* 26 */
        { 1,    0,      sys_alarm,              "alarm"         }, /* 27 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { 0,    0,      sys_prof,               "prof"          }, /* 44 */
        { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
-       { 1,    0,      sys_setgid,             "setgid"        }, /* 46 */
-       { 0,    NF,     sys_getgid,             "getgid"        }, /* 47 */
+       { 1,    0,      sys_setgid16,           "setgid"        }, /* 46 */
+       { 0,    NF,     sys_getgid16,           "getgid"        }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
-       { 0,    NF,     sys_geteuid,            "geteuid"       }, /* 49 */
-       { 0,    NF,     sys_getegid,            "getegid"       }, /* 50 */
+       { 0,    NF,     sys_geteuid16,          "geteuid"       }, /* 49 */
+       { 0,    NF,     sys_getegid16,          "getegid"       }, /* 50 */
        { 1,    TF,     sys_acct,               "acct"          }, /* 51 */
        { 2,    TF,     sys_umount2,            "umount"        }, /* 52 */
        { 0,    0,      sys_lock,               "lock"          }, /* 53 */
@@ -96,8 +96,8 @@
        { 3,    TS,     sys_sigaction,          "sigaction"     }, /* 67 */
        { 0,    TS,     sys_siggetmask,         "sgetmask"      }, /* 68 */
        { 1,    TS,     sys_sigsetmask,         "ssetmask"      }, /* 69 */
-       { 2,    0,      sys_setreuid,           "setreuid"      }, /* 70 */
-       { 2,    0,      sys_setregid,           "setregid"      }, /* 71 */
+       { 2,    0,      sys_setreuid16,         "setreuid"      }, /* 70 */
+       { 2,    0,      sys_setregid16,         "setregid"      }, /* 71 */
        { 3,    TS,     sys_sigsuspend,         "sigsuspend"    }, /* 72 */
        { 1,    TS,     sys_sigpending,         "sigpending"    }, /* 73 */
        { 2,    0,      sys_sethostname,        "sethostname"   }, /* 74 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
-       { 3,    TD,     sys_fchown,             "fchown"        }, /* 95 */
+       { 3,    TD,     sys_fchown16,           "fchown"        }, /* 95 */
        { 2,    0,      sys_getpriority,        "getpriority"   }, /* 96 */
        { 3,    0,      sys_setpriority,        "setpriority"   }, /* 97 */
        { 4,    0,      sys_profil,             "profil"        }, /* 98 */
        { 3,    0,      sys_sysfs,              "sysfs"         }, /* 135 */
        { 1,    0,      sys_personality,        "personality"   }, /* 136 */
        { 5,    0,      sys_afs_syscall,        "afs_syscall"   }, /* 137 */
-       { 1,    NF,     sys_setfsuid,           "setfsuid"      }, /* 138 */
-       { 1,    NF,     sys_setfsgid,           "setfsgid"      }, /* 139 */
+       { 1,    NF,     sys_setfsuid16,         "setfsuid"      }, /* 138 */
+       { 1,    NF,     sys_setfsgid16,         "setfsgid"      }, /* 139 */
        { 5,    TD,     sys_llseek,             "_llseek"       }, /* 140 */
        { 3,    TD,     sys_getdents,           "getdents"      }, /* 141 */
        { 5,    TD,     sys_select,             "select"        }, /* 142 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
        { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
-       { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
-       { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
+       { 3,    0,      sys_setresuid16,        "setresuid"     }, /* 164 */
+       { 3,    0,      sys_getresuid16,        "getresuid"     }, /* 165 */
        { 5,    0,      sys_vm86,               "vm86"          }, /* 166 */
        { 5,    0,      sys_query_module,       "query_module"  }, /* 167 */
        { 3,    TD,     sys_poll,               "poll"          }, /* 168 */
        { 3,    0,      sys_nfsservctl,         "nfsservctl"    }, /* 169 */
-       { 3,    0,      sys_setresgid,          "setresgid"     }, /* 170 */
-       { 3,    0,      sys_getresgid,          "getresgid"     }, /* 171 */
+       { 3,    0,      sys_setresgid16,        "setresgid"     }, /* 170 */
+       { 3,    0,      sys_getresgid16,        "getresgid"     }, /* 171 */
        { 5,    0,      sys_prctl,              "prctl"         }, /* 172 */
        { 0,    TS,     sys_rt_sigreturn,       "rt_sigreturn"  }, /* 173 */
        { 4,    TS,     sys_rt_sigaction,       "rt_sigaction"  }, /* 174 */
 
        { 6,    TD,     sys_pread,              "pread"         }, /* 180 */
        { 6,    TD,     sys_pwrite,             "pwrite"        }, /* 181 */
-       { 3,    TF,     sys_chown,              "chown"         }, /* 182 */
+       { 3,    TF,     sys_chown16,            "chown"         }, /* 182 */
        { 2,    TF,     sys_getcwd,             "getcwd"        }, /* 183 */
        { 2,    0,      sys_capget,             "capget"        }, /* 184 */
        { 2,    0,      sys_capset,             "capset"        }, /* 185 */
index 8df6a4dd8111165e018301093de2bfc3554a3c77..79f054a7a92b30f0be8b31f8248e745b7f1dcb7d 100644 (file)
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
        { 2,    TF,     sys_chmod,              "chmod"         }, /* 15 */
-       { 3,    TF,     sys_chown,              "chown"         }, /* 16 */
+       { 3,    TF,     sys_chown16,            "chown"         }, /* 16 */
        { 0,    TM,     sys_break,              "break"         }, /* 17 */
        { 2,    TF,     sys_oldstat,            "oldstat"       }, /* 18 */
        { 3,    TD,     sys_lseek,              "lseek"         }, /* 19 */
        { 0,    0,      sys_getpid,             "getpid"        }, /* 20 */
        { 5,    TF,     sys_mount,              "mount"         }, /* 21 */
        { 1,    TF,     sys_umount,             "oldumount"     }, /* 22 */
-       { 1,    0,      sys_setuid,             "setuid"        }, /* 23 */
-       { 0,    NF,     sys_getuid,             "getuid"        }, /* 24 */
+       { 1,    0,      sys_setuid16,           "setuid"        }, /* 23 */
+       { 0,    NF,     sys_getuid16,           "getuid"        }, /* 24 */
        { 1,    0,      sys_stime,              "stime"         }, /* 25 */
        { 4,    0,      sys_ptrace,             "ptrace"        }, /* 26 */
        { 1,    0,      sys_alarm,              "alarm"         }, /* 27 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { 0,    0,      sys_prof,               "prof"          }, /* 44 */
        { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
-       { 1,    0,      sys_setgid,             "setgid"        }, /* 46 */
-       { 0,    NF,     sys_getgid,             "getgid"        }, /* 47 */
+       { 1,    0,      sys_setgid16,           "setgid"        }, /* 46 */
+       { 0,    NF,     sys_getgid16,           "getgid"        }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
-       { 0,    NF,     sys_geteuid,            "geteuid"       }, /* 49 */
-       { 0,    NF,     sys_getegid,            "getegid"       }, /* 50 */
+       { 0,    NF,     sys_geteuid16,          "geteuid"       }, /* 49 */
+       { 0,    NF,     sys_getegid16,          "getegid"       }, /* 50 */
        { 1,    TF,     sys_acct,               "acct"          }, /* 51 */
        { 2,    TF,     sys_umount2,            "umount"        }, /* 52 */
        { 0,    0,      sys_lock,               "lock"          }, /* 53 */
@@ -96,8 +96,8 @@
        { 3,    TS,     sys_sigaction,          "sigaction"     }, /* 67 */
        { 0,    TS,     sys_siggetmask,         "sgetmask"      }, /* 68 */
        { 1,    TS,     sys_sigsetmask,         "ssetmask"      }, /* 69 */
-       { 2,    0,      sys_setreuid,           "setreuid"      }, /* 70 */
-       { 2,    0,      sys_setregid,           "setregid"      }, /* 71 */
+       { 2,    0,      sys_setreuid16,         "setreuid"      }, /* 70 */
+       { 2,    0,      sys_setregid16,         "setregid"      }, /* 71 */
        { 3,    TS,     sys_sigsuspend,         "sigsuspend"    }, /* 72 */
        { 1,    TS,     sys_sigpending,         "sigpending"    }, /* 73 */
        { 2,    0,      sys_sethostname,        "sethostname"   }, /* 74 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
-       { 3,    TD,     sys_fchown,             "fchown"        }, /* 95 */
+       { 3,    TD,     sys_fchown16,           "fchown"        }, /* 95 */
        { 2,    0,      sys_getpriority,        "getpriority"   }, /* 96 */
        { 3,    0,      sys_setpriority,        "setpriority"   }, /* 97 */
        { 4,    0,      sys_profil,             "profil"        }, /* 98 */
        { 3,    0,      sys_sysfs,              "sysfs"         }, /* 135 */
        { 1,    0,      sys_personality,        "personality"   }, /* 136 */
        { 5,    0,      sys_afs_syscall,        "afs_syscall"   }, /* 137 */
-       { 1,    NF,     sys_setfsuid,           "setfsuid"      }, /* 138 */
-       { 1,    NF,     sys_setfsgid,           "setfsgid"      }, /* 139 */
+       { 1,    NF,     sys_setfsuid16,         "setfsuid"      }, /* 138 */
+       { 1,    NF,     sys_setfsgid16,         "setfsgid"      }, /* 139 */
        { 5,    TD,     sys_llseek,             "_llseek"       }, /* 140 */
        { 3,    TD,     sys_getdents,           "getdents"      }, /* 141 */
        { 5,    TD,     sys_select,             "select"        }, /* 142 */
        { 2,    0,      sys_sched_rr_get_interval,      "sched_rr_get_interval" }, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
        { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
-       { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
-       { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
+       { 3,    0,      sys_setresuid16,        "setresuid"     }, /* 164 */
+       { 3,    0,      sys_getresuid16,        "getresuid"     }, /* 165 */
        { 5,    0,      sys_vm86,               "vm86"          }, /* 166 */
        { 5,    0,      sys_query_module,       "query_module"  }, /* 167 */
        { 3,    TD,     sys_poll,               "poll"          }, /* 168 */
        { 3,    0,      sys_nfsservctl,         "nfsservctl"    }, /* 169 */
-       { 3,    0,      sys_setresgid,          "setresgid"     }, /* 170 */
-       { 3,    0,      sys_getresgid,          "getresgid"     }, /* 171 */
+       { 3,    0,      sys_setresgid16,        "setresgid"     }, /* 170 */
+       { 3,    0,      sys_getresgid16,        "getresgid"     }, /* 171 */
        { 5,    0,      sys_prctl,              "prctl"         }, /* 172 */
        { 0,    TS,     sys_rt_sigreturn,       "rt_sigreturn"  }, /* 173 */
        { 4,    TS,     sys_rt_sigaction,       "rt_sigaction"  }, /* 174 */
        { 2,    TS,     sys_rt_sigsuspend,      "rt_sigsuspend" }, /* 179 */
        { 5,    TD,     sys_pread,              "pread"         }, /* 180 */
        { 5,    TD,     sys_pwrite,             "pwrite"        }, /* 181 */
-       { 3,    TF,     sys_chown,              "lchown"        }, /* 182 */
+       { 3,    TF,     sys_chown16,            "lchown"        }, /* 182 */
        { 2,    TF,     sys_getcwd,             "getcwd"        }, /* 183 */
        { 2,    0,      sys_capget,             "capget"        }, /* 184 */
        { 2,    0,      sys_capset,             "capset"        }, /* 185 */
index fb6076569880ef2918a3588f1577b85fd914863e..30ee94c17f75ab63bc3dfd94b7e609f4ca8bac83 100644 (file)
 #define        sys_fdatasync           sys_close
 #define        sys_fsync               sys_close
 #define        sys_getegid             sys_getuid
+#define        sys_getegid16           sys_geteuid16
 #define        sys_geteuid             sys_getuid
+#define        sys_geteuid16           sys_getuid16
 #define        sys_getgid              sys_getuid
+#define        sys_getgid16            sys_getuid16
 #define        sys_getpeername         sys_getsockname
 #define        sys_getresgid           sys_getresuid
+#define        sys_getresgid16         sys_getresuid16
 #define        sys_lstat               sys_stat
 #define        sys_lstat64             sys_stat64
 #define        sys_mkdir               sys_chmod
 #define        sys_set_robust_list     sys_munmap
 #define        sys_setdomainname       sys_sethostname
 #define        sys_setfsgid            sys_setfsuid
+#define        sys_setfsgid16          sys_setfsuid16
 #define        sys_setgid              sys_setuid
+#define        sys_setgid16            sys_setuid16
 #define        sys_setregid            sys_setreuid
+#define        sys_setregid16          sys_setreuid16
 #define        sys_setresgid           sys_setresuid
+#define        sys_setresgid16         sys_setresuid16
 #define        sys_stime               sys_time
 #define        sys_swapoff             sys_chdir
 #define        sys_symlink             sys_link
index f7d2cefec714fa6a711b86358c2975463d54bdea..2ed372303f363bb828b1a043a69be380d6c26500 100644 (file)
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
        { 2,    TF,     sys_chmod,              "chmod"         }, /* 15 */
-       { 3,    TF,     sys_chown,              "lchown"        }, /* 16 */
+       { 3,    TF,     sys_chown16,            "lchown"        }, /* 16 */
        { 0,    TM,     sys_break,              "break"         }, /* 17 */
        { 2,    TF,     sys_oldstat,            "oldstat"       }, /* 18 */
        { 3,    TD,     sys_lseek,              "lseek"         }, /* 19 */
        { 0,    0,      sys_getpid,             "getpid"        }, /* 20 */
        { 5,    TF,     sys_mount,              "mount"         }, /* 21 */
        { 1,    TF,     sys_umount,             "oldumount"     }, /* 22 */
-       { 1,    0,      sys_setuid,             "setuid"        }, /* 23 */
-       { 0,    NF,     sys_getuid,             "getuid"        }, /* 24 */
+       { 1,    0,      sys_setuid16,           "setuid"        }, /* 23 */
+       { 0,    NF,     sys_getuid16,           "getuid"        }, /* 24 */
        { 1,    0,      sys_stime,              "stime"         }, /* 25 */
        { 4,    0,      sys_ptrace,             "ptrace"        }, /* 26 */
        { 1,    0,      sys_alarm,              "alarm"         }, /* 27 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { 0,    0,      sys_prof,               "prof"          }, /* 44 */
        { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
-       { 1,    0,      sys_setgid,             "setgid"        }, /* 46 */
-       { 0,    NF,     sys_getgid,             "getgid"        }, /* 47 */
+       { 1,    0,      sys_setgid16,           "setgid"        }, /* 46 */
+       { 0,    NF,     sys_getgid16,           "getgid"        }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
-       { 0,    NF,     sys_geteuid,            "geteuid"       }, /* 49 */
-       { 0,    NF,     sys_getegid,            "getegid"       }, /* 50 */
+       { 0,    NF,     sys_geteuid16,          "geteuid"       }, /* 49 */
+       { 0,    NF,     sys_getegid16,          "getegid"       }, /* 50 */
        { 1,    TF,     sys_acct,               "acct"          }, /* 51 */
        { 2,    TF,     sys_umount2,            "umount"        }, /* 52 */
        { 0,    0,      sys_lock,               "lock"          }, /* 53 */
@@ -96,8 +96,8 @@
        { 3,    TS,     sys_sigaction,          "sigaction"     }, /* 67 */
        { 0,    TS,     sys_siggetmask,         "sgetmask"      }, /* 68 */
        { 1,    TS,     sys_sigsetmask,         "ssetmask"      }, /* 69 */
-       { 2,    0,      sys_setreuid,           "setreuid"      }, /* 70 */
-       { 2,    0,      sys_setregid,           "setregid"      }, /* 71 */
+       { 2,    0,      sys_setreuid16,         "setreuid"      }, /* 70 */
+       { 2,    0,      sys_setregid16,         "setregid"      }, /* 71 */
        { 3,    TS,     sys_sigsuspend,         "sigsuspend"    }, /* 72 */
        { 1,    TS,     sys_sigpending,         "sigpending"    }, /* 73 */
        { 2,    0,      sys_sethostname,        "sethostname"   }, /* 74 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
-       { 3,    TD,     sys_fchown,             "fchown"        }, /* 95 */
+       { 3,    TD,     sys_fchown16,           "fchown"        }, /* 95 */
        { 2,    0,      sys_getpriority,        "getpriority"   }, /* 96 */
        { 3,    0,      sys_setpriority,        "setpriority"   }, /* 97 */
        { 4,    0,      sys_profil,             "profil"        }, /* 98 */
        { 3,    0,      sys_sysfs,              "sysfs"         }, /* 135 */
        { 1,    0,      sys_personality,        "personality"   }, /* 136 */
        { 5,    0,      sys_afs_syscall,        "afs_syscall"   }, /* 137 */
-       { 1,    NF,     sys_setfsuid,           "setfsuid"      }, /* 138 */
-       { 1,    NF,     sys_setfsgid,           "setfsgid"      }, /* 139 */
+       { 1,    NF,     sys_setfsuid16,         "setfsuid"      }, /* 138 */
+       { 1,    NF,     sys_setfsgid16,         "setfsgid"      }, /* 139 */
        { 5,    TD,     sys_llseek,             "_llseek"       }, /* 140 */
        { 3,    TD,     sys_getdents,           "getdents"      }, /* 141 */
        { 5,    TD,     sys_select,             "select"        }, /* 142 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
        { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
-       { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
-       { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
+       { 3,    0,      sys_setresuid16,        "setresuid"     }, /* 164 */
+       { 3,    0,      sys_getresuid16,        "getresuid"     }, /* 165 */
        { 5,    0,      sys_vm86,               "vm86"          }, /* 166 */
        { 5,    0,      sys_query_module,       "query_module"  }, /* 167 */
        { 3,    TD,     sys_poll,               "poll"          }, /* 168 */
        { 3,    0,      sys_nfsservctl,         "nfsservctl"    }, /* 169 */
-       { 3,    0,      sys_setresgid,          "setresgid"     }, /* 170 */
-       { 3,    0,      sys_getresgid,          "getresgid"     }, /* 171 */
+       { 3,    0,      sys_setresgid16,        "setresgid"     }, /* 170 */
+       { 3,    0,      sys_getresgid16,        "getresgid"     }, /* 171 */
        { 5,    0,      sys_prctl,              "prctl"         }, /* 172 */
        { 0,    TS,     sys_rt_sigreturn,       "rt_sigreturn"  }, /* 173 */
        { 4,    TS,     sys_rt_sigaction,       "rt_sigaction"  }, /* 174 */
 
        { 5,    TD,     sys_pread,              "pread64"       }, /* 180 */
        { 5,    TD,     sys_pwrite,             "pwrite64"      }, /* 181 */
-       { 3,    TF,     sys_chown,              "chown"         }, /* 182 */
+       { 3,    TF,     sys_chown16,            "chown"         }, /* 182 */
        { 2,    TF,     sys_getcwd,             "getcwd"        }, /* 183 */
        { 2,    0,      sys_capget,             "capget"        }, /* 184 */
        { 2,    0,      sys_capset,             "capset"        }, /* 185 */
index 4543db8ae570f5b5f20a596cf5920270f5ba8d9c..03257bd168336f6617e910698db6ff330ce0b956 100644 (file)
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
        { 2,    TF,     sys_chmod,              "chmod"         }, /* 15 */
-       { 3,    TF,     sys_chown,              "chown"         }, /* 16 */
+       { 3,    TF,     sys_chown16,            "chown"         }, /* 16 */
        { 0,    TM,     sys_break,              "break"         }, /* 17 */
        { 2,    TF,     sys_oldstat,            "oldstat"       }, /* 18 */
        { 3,    TD,     sys_lseek,              "lseek"         }, /* 19 */
        { 0,    0,      sys_getpid,             "getpid"        }, /* 20 */
        { 5,    TF,     sys_mount,              "mount"         }, /* 21 */
        { 1,    TF,     sys_umount,             "oldumount"     }, /* 22 */
-       { 1,    0,      sys_setuid,             "setuid"        }, /* 23 */
-       { 0,    NF,     sys_getuid,             "getuid"        }, /* 24 */
+       { 1,    0,      sys_setuid16,           "setuid"        }, /* 23 */
+       { 0,    NF,     sys_getuid16,           "getuid"        }, /* 24 */
        { 1,    0,      sys_stime,              "stime"         }, /* 25 */
        { 4,    0,      sys_ptrace,             "ptrace"        }, /* 26 */
        { 1,    0,      sys_alarm,              "alarm"         }, /* 27 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { 0,    0,      sys_prof,               "prof"          }, /* 44 */
        { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
-       { 1,    0,      sys_setgid,             "setgid"        }, /* 46 */
-       { 0,    NF,     sys_getgid,             "getgid"        }, /* 47 */
+       { 1,    0,      sys_setgid16,           "setgid"        }, /* 46 */
+       { 0,    NF,     sys_getgid16,           "getgid"        }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
-       { 0,    NF,     sys_geteuid,            "geteuid"       }, /* 49 */
-       { 0,    NF,     sys_getegid,            "getegid"       }, /* 50 */
+       { 0,    NF,     sys_geteuid16,          "geteuid"       }, /* 49 */
+       { 0,    NF,     sys_getegid16,          "getegid"       }, /* 50 */
        { 1,    TF,     sys_acct,               "acct"          }, /* 51 */
        { 2,    TF,     sys_umount2,            "umount"        }, /* 52 */
        { 0,    0,      sys_lock,               "lock"          }, /* 53 */
@@ -96,8 +96,8 @@
        { 3,    TS,     sys_sigaction,          "sigaction"     }, /* 67 */
        { 0,    TS,     sys_siggetmask,         "sgetmask"      }, /* 68 */
        { 1,    TS,     sys_sigsetmask,         "ssetmask"      }, /* 69 */
-       { 2,    0,      sys_setreuid,           "setreuid"      }, /* 70 */
-       { 2,    0,      sys_setregid,           "setregid"      }, /* 71 */
+       { 2,    0,      sys_setreuid16,         "setreuid"      }, /* 70 */
+       { 2,    0,      sys_setregid16,         "setregid"      }, /* 71 */
        { 3,    TS,     sys_sigsuspend,         "sigsuspend"    }, /* 72 */
        { 1,    TS,     sys_sigpending,         "sigpending"    }, /* 73 */
        { 2,    0,      sys_sethostname,        "sethostname"   }, /* 74 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
-       { 3,    TD,     sys_fchown,             "fchown"        }, /* 95 */
+       { 3,    TD,     sys_fchown16,           "fchown"        }, /* 95 */
        { 2,    0,      sys_getpriority,        "getpriority"   }, /* 96 */
        { 3,    0,      sys_setpriority,        "setpriority"   }, /* 97 */
        { 4,    0,      sys_profil,             "profil"        }, /* 98 */
        { 3,    0,      sys_sysfs,              "sysfs"         }, /* 135 */
        { 1,    0,      sys_personality,        "personality"   }, /* 136 */
        { 5,    0,      sys_afs_syscall,        "afs_syscall"   }, /* 137 */
-       { 1,    NF,     sys_setfsuid,           "setfsuid"      }, /* 138 */
-       { 1,    NF,     sys_setfsgid,           "setfsgid"      }, /* 139 */
+       { 1,    NF,     sys_setfsuid16,         "setfsuid"      }, /* 138 */
+       { 1,    NF,     sys_setfsgid16,         "setfsgid"      }, /* 139 */
        { 5,    TD,     sys_llseek,             "_llseek"       }, /* 140 */
        { 3,    TD,     sys_getdents,           "getdents"      }, /* 141 */
        { 5,    TD,     sys_select,             "select"        }, /* 142 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
        { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
-       { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
-       { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
+       { 3,    0,      sys_setresuid16,        "setresuid"     }, /* 164 */
+       { 3,    0,      sys_getresuid16,        "getresuid"     }, /* 165 */
        { 5,    0,      printargs,              "getpagesize"   }, /* 166 */
        { 5,    0,      sys_query_module,       "query_module"  }, /* 167 */
        { 3,    TD,     sys_poll,               "poll"          }, /* 168 */
        { 3,    0,      sys_nfsservctl,         "nfsservctl"    }, /* 169 */
-       { 3,    0,      sys_setresgid,          "setresgid"     }, /* 170 */
-       { 3,    0,      sys_getresgid,          "getresgid"     }, /* 171 */
+       { 3,    0,      sys_setresgid16,        "setresgid"     }, /* 170 */
+       { 3,    0,      sys_getresgid16,        "getresgid"     }, /* 171 */
        { 5,    0,      sys_prctl,              "prctl"         }, /* 172 */
        { 0,    TS,     sys_rt_sigreturn,       "rt_sigreturn"  }, /* 173 */
        { 4,    TS,     sys_rt_sigaction,       "rt_sigaction"  }, /* 174 */
        { 2,    TS,     sys_rt_sigsuspend,      "rt_sigsuspend" }, /* 179 */
        { 5,    TD,     sys_pread,              "pread64"       }, /* 180 */
        { 5,    TD,     sys_pwrite,             "pwrite64"      }, /* 181 */
-       { 3,    TF,     sys_chown,              "lchown"        }, /* 182 */
+       { 3,    TF,     sys_chown16,            "lchown"        }, /* 182 */
        { 2,    TF,     sys_getcwd,             "getcwd"        }, /* 183 */
        { 2,    0,      sys_capget,             "capget"        }, /* 184 */
        { 2,    0,      sys_capset,             "capset"        }, /* 185 */
index c10e95767fd3628b0a96d3dead21d01a6da03a5f..629c18762093640f588ae6c68c0d85c0bc859f0f 100644 (file)
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
        { 2,    TF,     sys_chmod,              "chmod"         }, /* 15 */
-       { 3,    TF,     sys_chown,              "lchown"        }, /* 16 */
+       { 3,    TF,     sys_chown16,            "lchown"        }, /* 16 */
        { 0,    TM,     sys_break,              "break"         }, /* 17 */
        { 2,    TF,     sys_oldstat,            "oldstat"       }, /* 18 */
        { 3,    TD,     sys_lseek,              "lseek"         }, /* 19 */
        { 0,    0,      sys_getpid,             "getpid"        }, /* 20 */
        { 5,    TF,     sys_mount,              "mount"         }, /* 21 */
        { 1,    TF,     sys_umount,             "oldumount"     }, /* 22 */
-       { 1,    0,      sys_setuid,             "setuid"        }, /* 23 */
-       { 0,    NF,     sys_getuid,             "getuid"        }, /* 24 */
+       { 1,    0,      sys_setuid16,           "setuid"        }, /* 23 */
+       { 0,    NF,     sys_getuid16,           "getuid"        }, /* 24 */
        { 1,    0,      sys_stime,              "stime"         }, /* 25 */
        { 4,    0,      sys_ptrace,             "ptrace"        }, /* 26 */
        { 1,    0,      sys_alarm,              "alarm"         }, /* 27 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { 0,    0,      sys_prof,               "prof"          }, /* 44 */
        { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
-       { 1,    0,      sys_setgid,             "setgid"        }, /* 46 */
-       { 0,    NF,     sys_getgid,             "getgid"        }, /* 47 */
+       { 1,    0,      sys_setgid16,           "setgid"        }, /* 46 */
+       { 0,    NF,     sys_getgid16,           "getgid"        }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
-       { 0,    NF,     sys_geteuid,            "geteuid"       }, /* 49 */
-       { 0,    NF,     sys_getegid,            "getegid"       }, /* 50 */
+       { 0,    NF,     sys_geteuid16,          "geteuid"       }, /* 49 */
+       { 0,    NF,     sys_getegid16,          "getegid"       }, /* 50 */
        { 1,    TF,     sys_acct,               "acct"          }, /* 51 */
        { 2,    TF,     sys_umount2,            "umount"        }, /* 52 */
        { 0,    0,      sys_lock,               "lock"          }, /* 53 */
@@ -96,8 +96,8 @@
        { 3,    TS,     sys_sigaction,          "sigaction"     }, /* 67 */
        { 0,    TS,     sys_siggetmask,         "sgetmask"      }, /* 68 */
        { 1,    TS,     sys_sigsetmask,         "ssetmask"      }, /* 69 */
-       { 2,    0,      sys_setreuid,           "setreuid"      }, /* 70 */
-       { 2,    0,      sys_setregid,           "setregid"      }, /* 71 */
+       { 2,    0,      sys_setreuid16,         "setreuid"      }, /* 70 */
+       { 2,    0,      sys_setregid16,         "setregid"      }, /* 71 */
        { 3,    TS,     sys_sigsuspend,         "sigsuspend"    }, /* 72 */
        { 1,    TS,     sys_sigpending,         "sigpending"    }, /* 73 */
        { 2,    0,      sys_sethostname,        "sethostname"   }, /* 74 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
-       { 3,    TD,     sys_fchown,             "fchown"        }, /* 95 */
+       { 3,    TD,     sys_fchown16,           "fchown"        }, /* 95 */
        { 2,    0,      sys_getpriority,        "getpriority"   }, /* 96 */
        { 3,    0,      sys_setpriority,        "setpriority"   }, /* 97 */
        { 4,    0,      sys_profil,             "profil"        }, /* 98 */
        { 3,    0,      sys_sysfs,              "sysfs"         }, /* 135 */
        { 1,    0,      sys_personality,        "personality"   }, /* 136 */
        { 5,    0,      sys_afs_syscall,        "afs_syscall"   }, /* 137 */
-       { 1,    NF,     sys_setfsuid,           "setfsuid"      }, /* 138 */
-       { 1,    NF,     sys_setfsgid,           "setfsgid"      }, /* 139 */
+       { 1,    NF,     sys_setfsuid16,         "setfsuid"      }, /* 138 */
+       { 1,    NF,     sys_setfsgid16,         "setfsgid"      }, /* 139 */
        { 5,    TD,     sys_llseek,             "_llseek"       }, /* 140 */
        { 3,    TD,     sys_getdents,           "getdents"      }, /* 141 */
        { 5,    TD,     sys_select,             "select"        }, /* 142 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
        { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
-       { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
-       { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
+       { 3,    0,      sys_setresuid16,        "setresuid"     }, /* 164 */
+       { 3,    0,      sys_getresuid16,        "getresuid"     }, /* 165 */
        { 5,    0,      sys_vm86,               "vm86"          }, /* 166 */
        { 5,    0,      sys_query_module,       "query_module"  }, /* 167 */
        { 3,    TD,     sys_poll,               "poll"          }, /* 168 */
        { 3,    0,      sys_nfsservctl,         "nfsservctl"    }, /* 169 */
-       { 3,    0,      sys_setresgid,          "setresgid"     }, /* 170 */
-       { 3,    0,      sys_getresgid,          "getresgid"     }, /* 171 */
+       { 3,    0,      sys_setresgid16,        "setresgid"     }, /* 170 */
+       { 3,    0,      sys_getresgid16,        "getresgid"     }, /* 171 */
        { 5,    0,      sys_prctl,              "prctl"         }, /* 172 */
        { 0,    TS,     sys_rt_sigreturn,       "rt_sigreturn"  }, /* 173 */
        { 4,    TS,     sys_rt_sigaction,       "rt_sigaction"  }, /* 174 */
        { 2,    TS,     sys_rt_sigsuspend,      "rt_sigsuspend" }, /* 179 */
        { 5,    TD,     sys_pread,              "pread64"       }, /* 180 */
        { 5,    TD,     sys_pwrite,             "pwrite64"      }, /* 181 */
-       { 3,    TF,     sys_chown,              "chown"         }, /* 182 */
+       { 3,    TF,     sys_chown16,            "chown"         }, /* 182 */
        { 2,    TF,     sys_getcwd,             "getcwd"        }, /* 183 */
        { 2,    0,      sys_capget,             "capget"        }, /* 184 */
        { 2,    0,      sys_capset,             "capset"        }, /* 185 */
index e354a86ac6003e76bc1b7c4852611e90fb265a6f..a2c9d10a7de96b09b4d9a2020f08de02e7c95df4 100644 (file)
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
        { 2,    TF,     sys_chmod,              "chmod"         }, /* 15 */
-       { 3,    TF,     sys_chown,              "lchown"        }, /* 16 */
+       { 3,    TF,     sys_chown16,            "lchown"        }, /* 16 */
        { MA,   0,      NULL,                   NULL            }, /* 17 */
        { MA,   0,      NULL,                   NULL            }, /* 18 */
        { 3,    TD,     sys_lseek,              "lseek"         }, /* 19 */
        { 0,    0,      sys_getpid,             "getpid"        }, /* 20 */
        { 5,    TF,     sys_mount,              "mount"         }, /* 21 */
        { 1,    TF,     sys_umount,             "oldumount"     }, /* 22 */
-       { 1,    0,      sys_setuid,             "setuid"        }, /* 23 */
-       { 0,    NF,     sys_getuid,             "getuid"        }, /* 24 */
+       { 1,    0,      sys_setuid16,           "setuid"        }, /* 23 */
+       { 0,    NF,     sys_getuid16,           "getuid"        }, /* 24 */
        { 1,    0,      sys_stime,              "stime"         }, /* 25 */
        { 4,    0,      sys_ptrace,             "ptrace"        }, /* 26 */
        { 1,    0,      sys_alarm,              "alarm"         }, /* 27 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { MA,   0,      NULL,                   NULL            }, /* 44 */
        { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
-       { MA,   0,      NULL,                   NULL            }, /* 46 */
-       { MA,   0,      NULL,                   NULL            }, /* 47 */
+       { 1,    0,      sys_setgid16,           "setgid"        }, /* 46 */
+       { 0,    NF,     sys_getgid16,           "getgid"        }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
-       { 0,    NF,     sys_geteuid,            "geteuid"       }, /* 49 */
-       { 0,    NF,     sys_getegid,            "getegid"       }, /* 50 */
+       { 0,    NF,     sys_geteuid16,          "geteuid"       }, /* 49 */
+       { 0,    NF,     sys_getegid16,          "getegid"       }, /* 50 */
        { 1,    TF,     sys_acct,               "acct"          }, /* 51 */
        { 2,    TF,     sys_umount2,            "umount"        }, /* 52 */
        { MA,   0,      NULL,                   NULL            }, /* 53 */
@@ -98,8 +98,8 @@
        { 3,    TS,     sys_sigaction,          "sigaction"     }, /* 67 */
        { MA,   0,      NULL,                   NULL            }, /* 68 */
        { MA,   0,      NULL,                   NULL            }, /* 69 */
-       { 2,    0,      sys_setreuid,           "setreuid"      }, /* 70 */
-       { 2,    0,      sys_setregid,           "setregid"      }, /* 71 */
+       { 2,    0,      sys_setreuid16,         "setreuid"      }, /* 70 */
+       { 2,    0,      sys_setregid16,         "setregid"      }, /* 71 */
        { 3,    TS,     sys_sigsuspend,         "sigsuspend"    }, /* 72 */
        { 1,    TS,     sys_sigpending,         "sigpending"    }, /* 73 */
        { 2,    0,      sys_sethostname,        "sethostname"   }, /* 74 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
-       { 3,    TD,     sys_fchown,             "fchown"        }, /* 95 */
+       { 3,    TD,     sys_fchown16,           "fchown"        }, /* 95 */
        { 2,    0,      sys_getpriority,        "getpriority"   }, /* 96 */
        { 3,    0,      sys_setpriority,        "setpriority"   }, /* 97 */
        { MA,   0,      NULL,                   NULL            }, /* 98 */
        { 3,    0,      sys_sysfs,              "sysfs"         }, /* 135 */
        { 1,    0,      sys_personality,        "personality"   }, /* 136 */
        { 5,    0,      sys_afs_syscall,        "afs_syscall"   }, /* 137 */
-       { 1,    NF,     sys_setfsuid,           "setfsuid"      }, /* 138 */
-       { 1,    NF,     sys_setfsgid,           "setfsgid"      }, /* 139 */
+       { 1,    NF,     sys_setfsuid16,         "setfsuid"      }, /* 138 */
+       { 1,    NF,     sys_setfsgid16,         "setfsgid"      }, /* 139 */
        { 5,    TD,     sys_llseek,             "_llseek"       }, /* 140 */
        { 3,    TD,     sys_getdents,           "getdents"      }, /* 141 */
        { 5,    TD,     sys_select,             "select"        }, /* 142 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
        { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
-       { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
-       { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
+       { 3,    0,      sys_setresuid16,        "setresuid"     }, /* 164 */
+       { 3,    0,      sys_getresuid16,        "getresuid"     }, /* 165 */
        { MA,   0,      NULL,                   NULL            }, /* 166 */
        { 5,    0,      sys_query_module,       "query_module"  }, /* 167 */
        { 3,    TD,     sys_poll,               "poll"          }, /* 168 */
        { 3,    0,      sys_nfsservctl,         "nfsservctl"    }, /* 169 */
-       { 3,    0,      sys_setresgid,          "setresgid"     }, /* 170 */
-       { 3,    0,      sys_getresgid,          "getresgid"     }, /* 171 */
+       { 3,    0,      sys_setresgid16,        "setresgid"     }, /* 170 */
+       { 3,    0,      sys_getresgid16,        "getresgid"     }, /* 171 */
        { 5,    0,      sys_prctl,              "prctl"         }, /* 172 */
        { 0,    TS,     sys_sigreturn,          "rt_sigreturn"  }, /* 173 */
        { 4,    TS,     sys_rt_sigaction,       "rt_sigaction"  }, /* 174 */
        { 2,    TS,     sys_rt_sigsuspend,      "rt_sigsuspend" }, /* 179 */
        { 5,    TD,     sys_pread,              "pread"         }, /* 180 */
        { 5,    TD,     sys_pwrite,             "pwrite"        }, /* 181 */
-       { 3,    TF,     sys_chown,              "lchown"        }, /* 182 */
+       { 3,    TF,     sys_chown16,            "chown" },      /* 182 */
        { 2,    TF,     sys_getcwd,             "getcwd"        }, /* 183 */
        { 2,    0,      sys_capget,             "capget"        }, /* 184 */
        { 2,    0,      sys_capset,             "capset"        }, /* 185 */
index 5920fa0f0cf80dba68984647bcf8bc0c977c71ba..13a2f62b7c5a2b2acf79f498cd842b834bd25893 100644 (file)
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
        { 2,    TF,     sys_chmod,              "chmod"         }, /* 15 */
-       { 3,    TF,     sys_chown,              "lchown"        }, /* 16 */
+       { 3,    TF,     sys_chown16,            "lchown"        }, /* 16 */
        { 0,    TM,     sys_break,              "break"         }, /* 17 */
        { 2,    TF,     sys_oldstat,            "oldstat"       }, /* 18 */
        { 3,    TD,     sys_lseek,              "lseek"         }, /* 19 */
        { 0,    0,      sys_getpid,             "getpid"        }, /* 20 */
        { 5,    TF,     sys_mount,              "mount"         }, /* 21 */
        { 1,    TF,     sys_umount,             "oldumount"     }, /* 22 */
-       { 1,    0,      sys_setuid,             "setuid"        }, /* 23 */
-       { 0,    NF,     sys_getuid,             "getuid"        }, /* 24 */
+       { 1,    0,      sys_setuid16,           "setuid"        }, /* 23 */
+       { 0,    NF,     sys_getuid16,           "getuid"        }, /* 24 */
        { 1,    0,      sys_stime,              "stime"         }, /* 25 */
        { 4,    0,      sys_ptrace,             "ptrace"        }, /* 26 */
        { 1,    0,      sys_alarm,              "alarm"         }, /* 27 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { 0,    0,      sys_prof,               "prof"          }, /* 44 */
        { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
-       { 1,    0,      sys_setgid,             "setgid"        }, /* 46 */
-       { 0,    NF,     sys_getgid,             "getgid"        }, /* 47 */
+       { 1,    0,      sys_setgid16,           "setgid"        }, /* 46 */
+       { 0,    NF,     sys_getgid16,           "getgid"        }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
-       { 0,    NF,     sys_geteuid,            "geteuid"       }, /* 49 */
-       { 0,    NF,     sys_getegid,            "getegid"       }, /* 50 */
+       { 0,    NF,     sys_geteuid16,          "geteuid"       }, /* 49 */
+       { 0,    NF,     sys_getegid16,          "getegid"       }, /* 50 */
        { 1,    TF,     sys_acct,               "acct"          }, /* 51 */
        { 2,    TF,     sys_umount2,            "umount"        }, /* 52 */
        { 0,    0,      sys_lock,               "lock"          }, /* 53 */
@@ -98,8 +98,8 @@
        { 3,    TS,     sys_sigaction,          "sigaction"     }, /* 67 */
        { 0,    TS,     sys_siggetmask,         "sgetmask"      }, /* 68 */
        { 1,    TS,     sys_sigsetmask,         "ssetmask"      }, /* 69 */
-       { 2,    0,      sys_setreuid,           "setreuid"      }, /* 70 */
-       { 2,    0,      sys_setregid,           "setregid"      }, /* 71 */
+       { 2,    0,      sys_setreuid16,         "setreuid"      }, /* 70 */
+       { 2,    0,      sys_setregid16,         "setregid"      }, /* 71 */
        { 3,    TS,     sys_sigsuspend,         "sigsuspend"    }, /* 72 */
        { 1,    TS,     sys_sigpending,         "sigpending"    }, /* 73 */
        { 2,    0,      sys_sethostname,        "sethostname"   }, /* 74 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
-       { 3,    TD,     sys_fchown,             "fchown"        }, /* 95 */
+       { 3,    TD,     sys_fchown16,           "fchown"        }, /* 95 */
        { 2,    0,      sys_getpriority,        "getpriority"   }, /* 96 */
        { 3,    0,      sys_setpriority,        "setpriority"   }, /* 97 */
        { 4,    0,      sys_profil,             "profil"        }, /* 98 */
        { 3,    0,      sys_sysfs,              "sysfs"         }, /* 135 */
        { 1,    0,      sys_personality,        "personality"   }, /* 136 */
        { 5,    0,      sys_afs_syscall,        "afs_syscall"   }, /* 137 */
-       { 1,    NF,     sys_setfsuid,           "setfsuid"      }, /* 138 */
-       { 1,    NF,     sys_setfsgid,           "setfsgid"      }, /* 139 */
+       { 1,    NF,     sys_setfsuid16,         "setfsuid"      }, /* 138 */
+       { 1,    NF,     sys_setfsgid16,         "setfsgid"      }, /* 139 */
        { 5,    TD,     sys_llseek,             "_llseek"       }, /* 140 */
        { 3,    TD,     sys_getdents,           "getdents"      }, /* 141 */
        { 5,    TD,     sys_select,             "select"        }, /* 142 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
        { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
-       { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
-       { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
+       { 3,    0,      sys_setresuid16,        "setresuid"     }, /* 164 */
+       { 3,    0,      sys_getresuid16,        "getresuid"     }, /* 165 */
        { 5,    0,      sys_vm86,               "vm86"          }, /* 166 */
        { 5,    0,      sys_query_module,       "query_module"  }, /* 167 */
        { 3,    TD,     sys_poll,               "poll"          }, /* 168 */
        { 3,    0,      sys_nfsservctl,         "nfsservctl"    }, /* 169 */
-       { 3,    0,      sys_setresgid,          "setresgid"     }, /* 170 */
-       { 3,    0,      sys_getresgid,          "getresgid"     }, /* 171 */
+       { 3,    0,      sys_setresgid16,        "setresgid"     }, /* 170 */
+       { 3,    0,      sys_getresgid16,        "getresgid"     }, /* 171 */
        { 5,    0,      sys_prctl,              "prctl"         }, /* 172 */
        { 0,    TS,     sys_rt_sigreturn,       "rt_sigreturn"  }, /* 173 */
        { 4,    TS,     sys_rt_sigaction,       "rt_sigaction"  }, /* 174 */
        { 4,    TS,     sys_rt_sigtimedwait,    "rt_sigtimedwait"}, /* 177 */
        { 3,    TS,     sys_rt_sigqueueinfo,    "rt_sigqueueinfo"}, /* 178 */
        { 2,    TS,     sys_rt_sigsuspend,      "rt_sigsuspend" }, /* 179 */
-
        { 6,    TD,     sys_pread,              "pread"         }, /* 180 */
        { 6,    TD,     sys_pwrite,             "pwrite"        }, /* 181 */
-       { 3,    TF,     sys_chown,              "chown"         }, /* 182 */
+       { 3,    TF,     sys_chown16,            "chown"         }, /* 182 */
        { 2,    TF,     sys_getcwd,             "getcwd"        }, /* 183 */
        { 2,    0,      sys_capget,             "capget"        }, /* 184 */
        { 2,    0,      sys_capset,             "capset"        }, /* 185 */
index b3b8533c7ddc03df57ca04d18979ecf3a2c7ed4b..db43bfc9cb0c2e2d72b3b0a83e6ffdcbfa552ff8 100644 (file)
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
        { 2,    TF,     sys_chmod,              "chmod"         }, /* 15 */
-       { 3,    TF,     sys_chown,              "lchown"        }, /* 16 */
+       { 3,    TF,     sys_chown16,            "lchown"        }, /* 16 */
        { 0,    TM,     sys_break,              "break"         }, /* 17 */
        { 2,    TF,     sys_oldstat,            "oldstat"       }, /* 18 */
        { 3,    TD,     sys_lseek,              "lseek"         }, /* 19 */
        { 0,    0,      sys_getpid,             "getpid"        }, /* 20 */
        { 5,    TF,     sys_mount,              "mount"         }, /* 21 */
        { 1,    TF,     sys_umount,             "oldumount"     }, /* 22 */
-       { 1,    0,      sys_setuid,             "setuid"        }, /* 23 */
-       { 0,    NF,     sys_getuid,             "getuid"        }, /* 24 */
+       { 1,    0,      sys_setuid16,           "setuid"        }, /* 23 */
+       { 0,    NF,     sys_getuid16,           "getuid"        }, /* 24 */
        { 1,    0,      sys_stime,              "stime"         }, /* 25 */
        { 4,    0,      sys_ptrace,             "ptrace"        }, /* 26 */
        { 1,    0,      sys_alarm,              "alarm"         }, /* 27 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { 0,    0,      sys_prof,               "prof"          }, /* 44 */
        { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
-       { 1,    0,      sys_setgid,             "setgid"        }, /* 46 */
-       { 0,    NF,     sys_getgid,             "getgid"        }, /* 47 */
+       { 1,    0,      sys_setgid16,           "setgid"        }, /* 46 */
+       { 0,    NF,     sys_getgid16,           "getgid"        }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
-       { 0,    NF,     sys_geteuid,            "geteuid"       }, /* 49 */
-       { 0,    NF,     sys_getegid,            "getegid"       }, /* 50 */
+       { 0,    NF,     sys_geteuid16,          "geteuid"       }, /* 49 */
+       { 0,    NF,     sys_getegid16,          "getegid"       }, /* 50 */
        { 1,    TF,     sys_acct,               "acct"          }, /* 51 */
        { 2,    TF,     sys_umount2,            "umount"        }, /* 52 */
        { 0,    0,      sys_lock,               "lock"          }, /* 53 */
@@ -96,8 +96,8 @@
        { 3,    TS,     sys_sigaction,          "sigaction"     }, /* 67 */
        { 0,    TS,     sys_siggetmask,         "sgetmask"      }, /* 68 */
        { 1,    TS,     sys_sigsetmask,         "ssetmask"      }, /* 69 */
-       { 2,    0,      sys_setreuid,           "setreuid"      }, /* 70 */
-       { 2,    0,      sys_setregid,           "setregid"      }, /* 71 */
+       { 2,    0,      sys_setreuid16,         "setreuid"      }, /* 70 */
+       { 2,    0,      sys_setregid16,         "setregid"      }, /* 71 */
        { 3,    TS,     sys_sigsuspend,         "sigsuspend"    }, /* 72 */
        { 1,    TS,     sys_sigpending,         "sigpending"    }, /* 73 */
        { 2,    0,      sys_sethostname,        "sethostname"   }, /* 74 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
-       { 3,    TD,     sys_fchown,             "fchown"        }, /* 95 */
+       { 3,    TD,     sys_fchown16,           "fchown"        }, /* 95 */
        { 2,    0,      sys_getpriority,        "getpriority"   }, /* 96 */
        { 3,    0,      sys_setpriority,        "setpriority"   }, /* 97 */
        { 4,    0,      sys_profil,             "profil"        }, /* 98 */
        { 3,    0,      sys_sysfs,              "sysfs"         }, /* 135 */
        { 1,    0,      sys_personality,        "personality"   }, /* 136 */
        { 5,    0,      sys_afs_syscall,        "afs_syscall"   }, /* 137 */
-       { 1,    NF,     sys_setfsuid,           "setfsuid"      }, /* 138 */
-       { 1,    NF,     sys_setfsgid,           "setfsgid"      }, /* 139 */
+       { 1,    NF,     sys_setfsuid16,         "setfsuid"      }, /* 138 */
+       { 1,    NF,     sys_setfsgid16,         "setfsgid"      }, /* 139 */
        { 5,    TD,     sys_llseek,             "_llseek"       }, /* 140 */
        { 3,    TD,     sys_getdents,           "getdents"      }, /* 141 */
        { 5,    TD,     sys_select,             "select"        }, /* 142 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
        { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
-       { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
-       { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
+       { 3,    0,      sys_setresuid16,        "setresuid"     }, /* 164 */
+       { 3,    0,      sys_getresuid16,        "getresuid"     }, /* 165 */
        { 5,    0,      NULL,                   NULL            }, /* 166 */
        { 5,    0,      sys_query_module,       "query_module"  }, /* 167 */
        { 3,    TD,     sys_poll,               "poll"          }, /* 168 */
        { 3,    0,      sys_nfsservctl,         "nfsservctl"    }, /* 169 */
-       { 3,    0,      sys_setresgid,          "setresgid"     }, /* 170 */
-       { 3,    0,      sys_getresgid,          "getresgid"     }, /* 171 */
+       { 3,    0,      sys_setresgid16,        "setresgid"     }, /* 170 */
+       { 3,    0,      sys_getresgid16,        "getresgid"     }, /* 171 */
        { 5,    0,      sys_prctl,              "prctl"         }, /* 172 */
        { 0,    TS,     sys_rt_sigreturn,       "rt_sigreturn"  }, /* 173 */
        { 4,    TS,     sys_rt_sigaction,       "rt_sigaction"  }, /* 174 */
        { 2,    TS,     sys_rt_sigsuspend,      "rt_sigsuspend" }, /* 179 */
        { 4,    TD,     sys_pread,              "pread"         }, /* 180 */
        { 4,    TD,     sys_pwrite,             "pwrite"        }, /* 181 */
-       { 3,    TF,     sys_chown,              "chown"         }, /* 182 */
+       { 3,    TF,     sys_chown16,            "chown"         }, /* 182 */
        { 2,    TF,     sys_getcwd,             "getcwd"        }, /* 183 */
        { 2,    0,      sys_capget,             "capget"        }, /* 184 */
        { 2,    0,      sys_capset,             "capset"        }, /* 185 */
index 8bc4375c81545bb2a201c4302f231e1f420aae34..39d2ad04e018ed408d08a32663b252adcf8e970b 100644 (file)
        { 1,    TF,     sys_unlink,     "unlink" },             /* 10 */
        { 2,    TF|TP|SE|SI,    sys_execv,      "execv" },              /* 11 */
        { 1,    TF,     sys_chdir,      "chdir" },              /* 12 */
-       { 3,    TF,     sys_chown,      "chown"},               /* 13 */
+       { 3,    TF,     sys_chown16,      "chown"},             /* 13 */
        { 3,    TF,     sys_mknod,      "mknod" },              /* 14 */
        { 2,    TF,     sys_chmod,      "chmod" },              /* 15 */
-       { 3,    TF,     sys_chown,      "lchown" },             /* 16 */
+       { 3,    TF,     sys_chown16,    "lchown" },             /* 16 */
        { 1,    TM|SI,  sys_brk,        "brk" },                /* 17 */
        { 4,    0,      printargs,      "perfctr" },            /* 18 */
        { 3,    TD,     sys_lseek,      "lseek" },              /* 19 */
        { 0,    0,      sys_getpid,     "getpid" },             /* 20 */
        { 2,    0,      sys_capget,     "capget" },             /* 21 */
        { 2,    0,      sys_capset,     "capset" },             /* 22 */
-       { 1,    0,      sys_setuid,     "setuid" },             /* 23 */
-       { 0,    NF,     sys_getuid,     "getuid" },             /* 24 */
+       { 1,    0,      sys_setuid16,   "setuid" },             /* 23 */
+       { 0,    NF,     sys_getuid16,   "getuid" },             /* 24 */
        { 1,    0,      sys_time,       "time" },               /* 25 */
        { 5,    0,      sys_ptrace,     "ptrace" },             /* 26 */
        { 1,    0,      sys_alarm,      "alarm" },              /* 27 */
        { 1,    0,      sys_times,      "times" },              /* 43 */
        { 0,    NF,     sys_getuid,     "getuid32" },           /* 44 */
        { 2,    TF,     sys_umount2,    "umount" },             /* 45 */
-       { 1,    0,      sys_setgid,     "setgid" },             /* 46 */
-       { 0,    NF,     sys_getgid,     "getgid" },             /* 47 */
+       { 1,    0,      sys_setgid16,   "setgid" },             /* 46 */
+       { 0,    NF,     sys_getgid16,   "getgid" },             /* 47 */
        { 3,    TS,     sys_signal,     "signal" },             /* 48 */
-       { 0,    NF,     sys_geteuid,    "geteuid" },            /* 49 */
-       { 0,    NF,     sys_getegid,    "getegid" },            /* 50 */
+       { 0,    NF,     sys_geteuid16,  "geteuid" },            /* 49 */
+       { 0,    NF,     sys_getegid16,  "getegid" },            /* 50 */
        { 1,    TF,     sys_acct,       "acct" },               /* 51 */
        { 2,    0,      printargs,      "memory_ordering" },    /* 52 */
        { 0,    NF,     sys_getgid,     "getgid32" },           /* 53 */
        { 3,    TD,     sys_readv,      "readv" },              /* 120 */
        { 3,    TD,     sys_writev,     "writev" },             /* 121 */
        { 2,    0,      sys_settimeofday,"settimeofday" },      /* 122 */
-       { 3,    TD,     sys_fchown,     "fchown" },             /* 123 */
+       { 3,    TD,     sys_fchown16,   "fchown" },             /* 123 */
        { 2,    TD,     sys_fchmod,     "fchmod" },             /* 124 */
        { 6,    TN,     sys_recvfrom,   "recvfrom" },           /* 125 */
-       { 2,    0,      sys_setreuid,   "setreuid" },           /* 126 */
-       { 2,    0,      sys_setregid,   "setregid" },           /* 127 */
+       { 2,    0,      sys_setreuid16, "setreuid" },           /* 126 */
+       { 2,    0,      sys_setregid16, "setregid" },           /* 127 */
        { 2,    TF,     sys_rename,     "rename" },             /* 128 */
        { 2,    TF,     sys_truncate,   "truncate" },           /* 129 */
        { 2,    TD,     sys_ftruncate,  "ftruncate" },          /* 130 */
        { 0,    0,      sys_bdflush,    "bdflush" },            /* 225 */
        { 3,    0,      sys_sysfs,      "sysfs" },              /* 226 */
        { 5,    0,      sys_afs_syscall,"afs_syscall" },        /* 227 */
-       { 1,    NF,     sys_setfsuid,   "setfsuid" },           /* 228 */
-       { 1,    NF,     sys_setfsgid,   "setfsgid" },           /* 229 */
+       { 1,    NF,     sys_setfsuid16, "setfsuid" },           /* 228 */
+       { 1,    NF,     sys_setfsgid16, "setfsgid" },           /* 229 */
        { 5,    TD,     sys_select,     "select" },             /* 230 */
        { 1,    0,      sys_time,       "time" },               /* 231 */
        { 2,    TF,     sys_stat,       "stat" },               /* 232 */
index f4951cf38e9f9de72d66cfa2d1f8e251fc3356ed..5bfb19c657a507ed9d184d90956728d17bcb356d 100644 (file)
@@ -353,3 +353,14 @@ int sys_execv();
 int sys_getmsg();
 int sys_putmsg();
 #endif
+
+#if NEED_UID16_PARSERS
+int sys_chown16();
+int sys_fchown16();
+int sys_getresuid16();
+int sys_getuid16();
+int sys_setfsuid16();
+int sys_setresuid16();
+int sys_setreuid16();
+int sys_setuid16();
+#endif
index ef0545eff6daf09074da7b91ca12250b773e9f1f..9504dd362cf95d23639daa6572870180d50f171f 100644 (file)
@@ -9,6 +9,7 @@ sigaction
 stack-fcall
 statfs
 uid
+uid16
 uid32
 uio
 *.log
index 85fe9c6fe8cbbd75cb81118d3a4b39b186ebc21f..560648b6821e1015c5afcd377f35ac0d852efc2e 100644 (file)
@@ -14,6 +14,7 @@ check_PROGRAMS = \
        stack-fcall \
        statfs \
        uid \
+       uid16 \
        uid32 \
        uio
 
@@ -37,6 +38,7 @@ TESTS = \
        net-fd.test \
        net-yy.test \
        uid.test \
+       uid16.test \
        uid32.test \
        uio.test \
        count.test \
diff --git a/tests/uid16.c b/tests/uid16.c
new file mode 100644 (file)
index 0000000..43960e7
--- /dev/null
@@ -0,0 +1,44 @@
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+#include <assert.h>
+#include <unistd.h>
+#include <sys/syscall.h>
+
+int
+main(void)
+{
+#if defined(__NR_getuid) \
+ && defined(__NR_setuid) \
+ && defined(__NR_getresuid) \
+ && defined(__NR_setreuid) \
+ && defined(__NR_setresuid) \
+ && defined(__NR_chown) \
+ \
+ && defined(__NR_getuid32) \
+ && defined(__NR_setuid32) \
+ && defined(__NR_getresuid32) \
+ && defined(__NR_setreuid32) \
+ && defined(__NR_setresuid32) \
+ && defined(__NR_chown32) \
+ \
+ && __NR_getuid != __NR_getuid32 \
+ && __NR_setuid != __NR_setuid32 \
+ && __NR_getresuid != __NR_getresuid32 \
+ && __NR_setreuid != __NR_setreuid32 \
+ && __NR_setresuid != __NR_setresuid32 \
+ && __NR_chown != __NR_chown32 \
+ /**/
+       uid_t r, e, s;
+
+       e = syscall(__NR_getuid);
+       assert(syscall(__NR_setuid, e) == 0);
+       assert(syscall(__NR_getresuid, &r, &e, &s) == 0);
+       assert(syscall(__NR_setreuid, -1, 0xffff) == 0);
+       assert(syscall(__NR_setresuid, -1, e, 0xffff) == 0);
+       assert(syscall(__NR_chown, ".", -1, 0xffff) == 0);
+       return 0;
+#else
+       return 77;
+#endif
+}
diff --git a/tests/uid16.test b/tests/uid16.test
new file mode 100755 (executable)
index 0000000..b9da79d
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Check uid16_t decoding.
+
+uid_t_size=16
+
+. "${srcdir=.}/uid.test"
diff --git a/uid.c b/uid.c
index bab6c5eb6860abd0f795ae80220d9a07623b525b..376d0591ae69e4ee1ab9cc21a2ed31e69ec0d429 100644 (file)
--- a/uid.c
+++ b/uid.c
@@ -1,6 +1,39 @@
+#ifdef STRACE_UID_SIZE
+# if STRACE_UID_SIZE != 16
+#  error invalid STRACE_UID_SIZE
+# endif
+
+# define SIZEIFY(x)            SIZEIFY_(x,STRACE_UID_SIZE)
+# define SIZEIFY_(x,size)      SIZEIFY__(x,size)
+# define SIZEIFY__(x,size)     x ## size
+
+# define sys_getuid    SIZEIFY(sys_getuid)
+# define sys_setfsuid  SIZEIFY(sys_setfsuid)
+# define sys_setuid    SIZEIFY(sys_setuid)
+# define sys_getresuid SIZEIFY(sys_getresuid)
+# define sys_setreuid  SIZEIFY(sys_setreuid)
+# define sys_setresuid SIZEIFY(sys_setresuid)
+# define sys_chown     SIZEIFY(sys_chown)
+# define sys_fchown    SIZEIFY(sys_fchown)
+# define printuid      SIZEIFY(printuid)
+#endif /* STRACE_UID_SIZE */
+
 #include "defs.h"
 
-#include <asm/posix_types.h>
+#ifdef STRACE_UID_SIZE
+# if !NEED_UID16_PARSERS
+#  undef STRACE_UID_SIZE
+# endif
+#else
+# define STRACE_UID_SIZE 32
+#endif
+
+#ifdef STRACE_UID_SIZE
+
+# undef uid_t
+# define uid_t         uid_t_(STRACE_UID_SIZE)
+# define uid_t_(size)  uid_t__(size)
+# define uid_t__(size) uint ## size ## _t
 
 int
 sys_getuid(struct tcb *tcp)
@@ -29,27 +62,28 @@ sys_setuid(struct tcb *tcp)
        return 0;
 }
 
+static void
+get_print_uid(struct tcb *tcp, const char *prefix, const long addr)
+{
+       uid_t uid;
+
+       if (umove(tcp, addr, &uid) < 0)
+               tprintf("%s%#lx", prefix, addr);
+       else
+               tprintf("%s[%u]", prefix, uid);
+}
+
 int
 sys_getresuid(struct tcb *tcp)
 {
        if (exiting(tcp)) {
-               __kernel_uid_t uid;
-               if (syserror(tcp))
+               if (syserror(tcp)) {
                        tprintf("%#lx, %#lx, %#lx", tcp->u_arg[0],
                                tcp->u_arg[1], tcp->u_arg[2]);
-               else {
-                       if (umove(tcp, tcp->u_arg[0], &uid) < 0)
-                               tprintf("%#lx, ", tcp->u_arg[0]);
-                       else
-                               tprintf("[%lu], ", (unsigned long) uid);
-                       if (umove(tcp, tcp->u_arg[1], &uid) < 0)
-                               tprintf("%#lx, ", tcp->u_arg[1]);
-                       else
-                               tprintf("[%lu], ", (unsigned long) uid);
-                       if (umove(tcp, tcp->u_arg[2], &uid) < 0)
-                               tprintf("%#lx", tcp->u_arg[2]);
-                       else
-                               tprintf("[%lu]", (unsigned long) uid);
+               } else {
+                       get_print_uid(tcp, "", tcp->u_arg[0]);
+                       get_print_uid(tcp, ", ", tcp->u_arg[1]);
+                       get_print_uid(tcp, ", ", tcp->u_arg[2]);
                }
        }
        return 0;
@@ -101,8 +135,10 @@ sys_fchown(struct tcb *tcp)
 void
 printuid(const char *text, const unsigned int uid)
 {
-       if ((unsigned int) -1 == uid)
+       if ((unsigned int) -1 == uid || (uid_t) -1 == uid)
                tprintf("%s-1", text);
        else
                tprintf("%s%u", text, uid);
 }
+
+#endif /* STRACE_UID_SIZE */
diff --git a/uid16.c b/uid16.c
new file mode 100644 (file)
index 0000000..c6d665d
--- /dev/null
+++ b/uid16.c
@@ -0,0 +1,2 @@
+#define STRACE_UID_SIZE 16
+#include "uid.c"