[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;
> }