]> Repositorios git - scryer-prolog.git/commitdiff
ENHANCED: throw Prolog exception on expired certificates
authorMarkus Triska <[email protected]>
Tue, 9 Jun 2020 21:01:28 +0000 (23:01 +0200)
committerMarkus Triska <[email protected]>
Tue, 9 Jun 2020 21:01:28 +0000 (23:01 +0200)
Example:

    ?- socket_client_open('expired.badssl.com':443, S, [tls(true)]).
    caught: error(permission_error(open,source_sink,'expired.badssl.com'),socket_client_open/3)

src/prolog/machine/system_calls.rs

index 7d0592bbec8cceacc069c252dfbfc59f78611b94..887163a0eee84c58459f0715f33619799b90b097 100644 (file)
@@ -4536,7 +4536,10 @@ impl MachineState {
                                 match tls {
                                   "false" => { Stream::from_tcp_stream(socket_addr, tcp_stream) }
                                   "true" => { let connector = TlsConnector::new().unwrap();
-                                              let stream = connector.connect(socket_atom.as_str(), tcp_stream).unwrap();
+                                              let stream = match connector.connect(socket_atom.as_str(), tcp_stream) {
+                                                    Ok(tls_stream) => { tls_stream }
+                                                    Err(_) => { return Err(self.open_permission_error(addr, "socket_client_open", 3)); }
+                                                   };
 
                                               Stream::from_tls_stream(socket_addr, stream)
                                             }