]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
linux-user: zero fstat buffer to initialize nsec fields
authorUlrich Hecht <uli@suse.de>
Fri, 24 Jul 2009 17:10:32 +0000 (19:10 +0200)
committerRiku Voipio <riku.voipio@iki.fi>
Tue, 25 Aug 2009 14:15:35 +0000 (17:15 +0300)
The fstat implementation does not initialize the nanosecond fields in the
stat buffer; this caused funny values to turn up there, preventing, for
instance, cp -p from preserving timestamps because utimensat rejected
the out-of-bounds nanosecond values. Resetting the entire structure
to zero fixes that.

Signed-off-by: Ulrich Hecht <uli@suse.de>
Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
linux-user/syscall.c

index 7eb09fa8d71b74752f35bfec7d7947e2d04ed972..25b95ea05a9aba3840fb15203424cc30ca290a47 100644 (file)
@@ -5529,6 +5529,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
 
                 if (!lock_user_struct(VERIFY_WRITE, target_st, arg2, 0))
                     goto efault;
+                memset(target_st, 0, sizeof(*target_st));
                 __put_user(st.st_dev, &target_st->st_dev);
                 __put_user(st.st_ino, &target_st->st_ino);
                 __put_user(st.st_mode, &target_st->st_mode);