linux-user: zero fstat buffer to initialize nsec fields
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>
This commit is contained in:
		
							parent
							
								
									e72d2cc781
								
							
						
					
					
						commit
						12727917db
					
				| 
						 | 
					@ -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))
 | 
					                if (!lock_user_struct(VERIFY_WRITE, target_st, arg2, 0))
 | 
				
			||||||
                    goto efault;
 | 
					                    goto efault;
 | 
				
			||||||
 | 
					                memset(target_st, 0, sizeof(*target_st));
 | 
				
			||||||
                __put_user(st.st_dev, &target_st->st_dev);
 | 
					                __put_user(st.st_dev, &target_st->st_dev);
 | 
				
			||||||
                __put_user(st.st_ino, &target_st->st_ino);
 | 
					                __put_user(st.st_ino, &target_st->st_ino);
 | 
				
			||||||
                __put_user(st.st_mode, &target_st->st_mode);
 | 
					                __put_user(st.st_mode, &target_st->st_mode);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue