@@ -770,6 +770,37 @@ async fn test_std_to_tokio_tcpstream() -> std::io::Result<()> {
770
770
Ok ( ( ) )
771
771
}
772
772
773
+ fn test_rustls ( ) -> std:: io:: Result < ( ) > {
774
+ let config = rustls:: ClientConfig :: builder ( )
775
+ . with_root_certificates ( rustls:: RootCertStore :: empty ( ) )
776
+ . with_no_client_auth ( ) ;
777
+ let server_name = rustls:: pki_types:: ServerName :: try_from ( "www.example.com" ) . unwrap ( ) ;
778
+ let config_arc = std:: sync:: Arc :: new ( config) ;
779
+ let mut client = rustls:: ClientConnection :: new ( config_arc, server_name) . unwrap ( ) ; // $ MISSING: Alert[rust/summary/taint-sources]
780
+ let mut reader = client. reader ( ) ;
781
+ sink ( & reader) ; // $ MISSING: hasTaintFlow
782
+
783
+ {
784
+ let mut buffer = [ 0u8 ; 100 ] ;
785
+ let _bytes = reader. read ( & mut buffer) ?;
786
+ sink ( & buffer) ; // $ MISSING: hasTaintFlow
787
+ }
788
+
789
+ {
790
+ let mut buffer = Vec :: < u8 > :: new ( ) ;
791
+ let _bytes = reader. read_to_end ( & mut buffer) ?;
792
+ sink ( & buffer) ; // $ MISSING: hasTaintFlow
793
+ }
794
+
795
+ {
796
+ let mut buffer = String :: new ( ) ;
797
+ let _bytes = reader. read_to_string ( & mut buffer) ?;
798
+ sink ( & buffer) ; // $ MISSING: hasTaintFlow
799
+ }
800
+
801
+ Ok ( ( ) )
802
+ }
803
+
773
804
#[ tokio:: main]
774
805
async fn main ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
775
806
let case = std:: env:: args ( ) . nth ( 1 ) . unwrap_or ( String :: from ( "1" ) ) . parse :: < i64 > ( ) . unwrap ( ) ; // $ Alert[rust/summary/taint-sources]
@@ -849,5 +880,11 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
849
880
Err ( e) => println ! ( "error: {}" , e) ,
850
881
}
851
882
883
+ println ! ( "test_rustls..." ) ;
884
+ match test_rustls ( ) {
885
+ Ok ( _) => println ! ( "complete" ) ,
886
+ Err ( e) => println ! ( "error: {}" , e) ,
887
+ }
888
+
852
889
Ok ( ( ) )
853
890
}
0 commit comments