[PATCH] fix open flag decoding on 32-bit Android

enh enh at google.com
Fri Oct 3 16:51:18 UTC 2014


ping?

On Tue, Sep 23, 2014 at 7:09 PM, enh <enh at google.com> wrote:
> commit d2bed27b663096f8771df824a85f3815a0c7d7da
> Author: Elliott Hughes <enh at google.com>
> Date:   Tue Sep 23 18:49:19 2014 -0700
>
>     Don't risk truncating open flags by using mode_t.
>
>     On Android, 32-bit arm and x86 use __kernel_mode_t (an unsigned short)
>     as their mode_t. The open(2) flags are actually an int, so high ones
>     like O_CLOEXEC get truncated if you coerce them to mode_t.
>
>     Signed-off-by: Elliott Hughes <enh at google.com>
>
> diff --git a/defs.h b/defs.h
> index cd9817b..5bfeb6b 100644
> --- a/defs.h
> +++ b/defs.h
> @@ -708,8 +708,8 @@ extern void print_sigset_addr_len(struct tcb *, long, long);
>  extern void printsignal(int);
>  extern void tprint_iov(struct tcb *, unsigned long, unsigned long,
> int decode_iov);
>  extern void tprint_iov_upto(struct tcb *, unsigned long, unsigned
> long, int decode_iov, unsigned long);
> -extern void tprint_open_modes(mode_t);
> -extern const char *sprint_open_modes(mode_t);
> +extern void tprint_open_modes(int);
> +extern const char *sprint_open_modes(int);
>  extern void print_loff_t(struct tcb *, long);
>
>  extern const struct_ioctlent *ioctl_lookup(unsigned long);
> diff --git a/file.c b/file.c
> index c2bf6d3..0ec1d4b 100644
> --- a/file.c
> +++ b/file.c
> @@ -237,7 +237,7 @@ print_dirfd(struct tcb *tcp, int fd)
>   * other bits are real flags.
>   */
>  const char *
> -sprint_open_modes(mode_t flags)
> +sprint_open_modes(int flags)
>  {
>   static char outstr[(1 + ARRAY_SIZE(open_mode_flags)) * sizeof("O_LARGEFILE")];
>   char *p;
> @@ -274,7 +274,7 @@ sprint_open_modes(mode_t flags)
>  }
>
>  void
> -tprint_open_modes(mode_t flags)
> +tprint_open_modes(int flags)
>  {
>   tprints(sprint_open_modes(flags) + sizeof("flags"));
>  }



-- 
Elliott Hughes - http://who/enh - http://jessies.org/~enh/
Java i18n/JNI/NIO, or bionic questions? Mail me/drop by/add me as a reviewer.




More information about the Strace-devel mailing list