File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -590,4 +590,28 @@ mod tests {
590590 }
591591 assert_eq ! ( misses. load( Ordering :: Relaxed ) , 0 ) ;
592592 }
593+
594+ #[ test]
595+ fn corrupt_update_retains_previous_certificate ( ) {
596+ let original = make_test_cert_data ( ) ;
597+ let mut corrupt = make_test_cert_data ( ) ;
598+ corrupt. cert_pem = "not a certificate" . to_string ( ) ;
599+
600+ let resolver = CertResolver :: new ( ) ;
601+ resolver
602+ . update_cert ( "example.com" , & original)
603+ . expect ( "failed to install original certificate" ) ;
604+ resolver
605+ . update_cert ( "example.com" , & corrupt)
606+ . expect_err ( "corrupt certificate must be rejected" ) ;
607+ assert_eq ! (
608+ resolver
609+ . get( )
610+ . get_cert_data( "example.com" )
611+ . expect( "original certificate was lost" )
612+ . not_after,
613+ original. not_after
614+ ) ;
615+ assert ! ( resolver. get( ) . has_cert_for_sni( "app.example.com" ) ) ;
616+ }
593617}
You can’t perform that action at this time.
0 commit comments