mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	libxfs: add more bounds checking to sb sanity checks
Current sb verifier doesn't check bounds on sb_fdblocks and sb_ifree. Add sanity checks for these parameters. Signed-off-by: Bill O'Donnell <billodo@redhat.com> [darrick: port to refactored sb validation predicates] Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com>
This commit is contained in:
		
							parent
							
								
									eca383fcd6
								
							
						
					
					
						commit
						8756a5af18
					
				
					 1 changed files with 12 additions and 0 deletions
				
			
		| 
						 | 
					@ -150,6 +150,18 @@ xfs_validate_sb_write(
 | 
				
			||||||
	struct xfs_mount	*mp,
 | 
						struct xfs_mount	*mp,
 | 
				
			||||||
	struct xfs_sb		*sbp)
 | 
						struct xfs_sb		*sbp)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
						 * Carry out additional sb summary counter sanity checks when we write
 | 
				
			||||||
 | 
						 * the superblock.  We skip this in the read validator because there
 | 
				
			||||||
 | 
						 * could be newer superblocks in the log and if the values are garbage
 | 
				
			||||||
 | 
						 * we'll recalculate them at the end of log mount.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						if (sbp->sb_fdblocks > sbp->sb_dblocks ||
 | 
				
			||||||
 | 
						    sbp->sb_ifree > sbp->sb_icount) {
 | 
				
			||||||
 | 
							xfs_warn(mp, "SB summary counter sanity check failed");
 | 
				
			||||||
 | 
							return -EFSCORRUPTED;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (XFS_SB_VERSION_NUM(sbp) != XFS_SB_VERSION_5)
 | 
						if (XFS_SB_VERSION_NUM(sbp) != XFS_SB_VERSION_5)
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue