qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH for-2.5] fsdev-proxy-helper: avoid TOC/TOU race


From: Greg Kurz
Subject: Re: [Qemu-devel] [PATCH for-2.5] fsdev-proxy-helper: avoid TOC/TOU race
Date: Fri, 27 Nov 2015 13:13:49 +0100

On Fri, 27 Nov 2015 12:43:05 +0100
Paolo Bonzini <address@hidden> wrote:

> There is a minor time of check/time of use race between statfs and chroot.
> It can be fixed easily by stat-ing the root after it has been changed.
> 
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---

Reviewed-by: Greg Kurz <address@hidden>

>  fsdev/virtfs-proxy-helper.c | 20 ++++++++++----------
>  1 file changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/fsdev/virtfs-proxy-helper.c b/fsdev/virtfs-proxy-helper.c
> index 9097d15..ad1da0d 100644
> --- a/fsdev/virtfs-proxy-helper.c
> +++ b/fsdev/virtfs-proxy-helper.c
> @@ -1128,10 +1128,19 @@ int main(int argc, char **argv)
>          }
>      }
> 
> +    if (chdir("/") < 0) {
> +        do_perror("chdir");
> +        goto error;
> +    }
> +    if (chroot(rpath) < 0) {
> +        do_perror("chroot");
> +        goto error;
> +    }
> +
>      get_version = false;
>  #ifdef FS_IOC_GETVERSION
>      /* check whether underlying FS support IOC_GETVERSION */
> -    retval = statfs(rpath, &st_fs);
> +    retval = statfs("/", &st_fs);
>      if (!retval) {
>          switch (st_fs.f_type) {
>          case EXT2_SUPER_MAGIC:
> @@ -1144,16 +1153,7 @@ int main(int argc, char **argv)
>      }
>  #endif
> 
> -    if (chdir("/") < 0) {
> -        do_perror("chdir");
> -        goto error;
> -    }
> -    if (chroot(rpath) < 0) {
> -        do_perror("chroot");
> -        goto error;
> -    }
>      umask(0);
> -
>      if (init_capabilities() < 0) {
>          goto error;
>      }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]