File tree Expand file tree Collapse file tree 1 file changed +13
-0
lines changed Expand file tree Collapse file tree 1 file changed +13
-0
lines changed Original file line number Diff line number Diff line change @@ -729,6 +729,10 @@ impl GPT {
729729 reader. seek ( SeekFrom :: Start ( sector_size) ) ?;
730730 let header = GPTHeader :: read_from ( & mut reader) . or_else ( |primary_err| {
731731 let len = reader. seek ( SeekFrom :: End ( 0 ) ) ?;
732+ if len < sector_size {
733+ return Err ( InvalidSignature ) ;
734+ }
735+
732736 reader. seek ( SeekFrom :: Start ( ( len / sector_size - 1 ) * sector_size) ) ?;
733737
734738 GPTHeader :: read_from ( & mut reader) . map_err ( |backup_err| {
@@ -1427,6 +1431,15 @@ mod test {
14271431 assert ! ( GPT :: find_from( & mut fs:: File :: open( DISK2 ) . unwrap( ) ) . is_ok( ) ) ;
14281432 }
14291433
1434+ #[ test]
1435+ fn input_too_short ( ) {
1436+ let mut empty = io:: Cursor :: new ( vec ! [ 1 ; 5 ] ) ;
1437+ assert ! ( matches!(
1438+ GPT :: read_from( & mut empty, 512 ) . expect_err( "Should fail on short input" ) ,
1439+ Error :: InvalidSignature
1440+ ) ) ;
1441+ }
1442+
14301443 #[ test]
14311444 fn find_backup ( ) {
14321445 fn test ( path : & str , ss : u64 ) {
You can’t perform that action at this time.
0 commit comments