mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 08:38:45 +02:00 
			
		
		
		
	fat: fix uninitialized field in nostale filehandles
When fat_encode_fh_nostale() encodes file handle without a parent it
stores only first 10 bytes of the file handle. However the length of the
file handle must be a multiple of 4 so the file handle is actually 12
bytes long and the last two bytes remain uninitialized. This is not
great at we potentially leak uninitialized information with the handle
to userspace. Properly initialize the full handle length.
Link: https://lkml.kernel.org/r/20240205122626.13701-1-jack@suse.cz
Reported-by: syzbot+3ce5dea5b1539ff36769@syzkaller.appspotmail.com
Fixes: ea3983ace6 ("fat: restructure export_operations")
Signed-off-by: Jan Kara <jack@suse.cz>
Acked-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Amir Goldstein <amir73il@gmail.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
			
			
This commit is contained in:
		
							parent
							
								
									a1fb1c7795
								
							
						
					
					
						commit
						fde2497d2b
					
				
					 1 changed files with 6 additions and 0 deletions
				
			
		|  | @ -130,6 +130,12 @@ fat_encode_fh_nostale(struct inode *inode, __u32 *fh, int *lenp, | |||
| 		fid->parent_i_gen = parent->i_generation; | ||||
| 		type = FILEID_FAT_WITH_PARENT; | ||||
| 		*lenp = FAT_FID_SIZE_WITH_PARENT; | ||||
| 	} else { | ||||
| 		/*
 | ||||
| 		 * We need to initialize this field because the fh is actually | ||||
| 		 * 12 bytes long | ||||
| 		 */ | ||||
| 		fid->parent_i_pos_hi = 0; | ||||
| 	} | ||||
| 
 | ||||
| 	return type; | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Jan Kara
						Jan Kara