]> The Tcpdump Group git mirrors - libpcap/commitdiff
Have the program using TLS decide how to deal with a failure to set TLS up.
authorGuy Harris <[email protected]>
Mon, 7 Jan 2019 18:46:17 +0000 (10:46 -0800)
committerGuy Harris <[email protected]>
Mon, 7 Jan 2019 18:46:17 +0000 (10:46 -0800)
Export ssl_init_once(), get rid of init_ssl_or_die(), and, in rpcapd, if
ssl_init_once() fails, use rpcapd_log() to log the error.

rpcapd/rpcapd.c
sslutils.c
sslutils.h

index 5d9dd34377d8e682f8570fcd1948720f7992a95c..f4c824e15cdddb031582c3fbb219eaac4d63533a 100644 (file)
@@ -368,7 +368,14 @@ int main(int argc, char *argv[])
 #endif
 
 # ifdef HAVE_OPENSSL
 #endif
 
 # ifdef HAVE_OPENSSL
-       if (uses_ssl) init_ssl_or_die(1, enable_compression);
+       if (uses_ssl) {
+               if (ssl_init_once(1, enable_compression, errbuf, PCAP_ERRBUF_SIZE) < 0)
+               {
+                       rpcapd_log(LOGPRIO_ERROR, "Can't initialize SSL: %s",
+                           errbuf);
+                       exit(2);
+               }
+       }
 # endif
 
 #ifndef _WIN32
 # endif
 
 #ifndef _WIN32
index cde19137448b9a45a07d285fecda02273a3f144a..605000bcbed9963aa90f0b16a2660ba8684af438 100644 (file)
@@ -49,7 +49,7 @@ char ssl_rootfile[PATH_MAX];  //!< file containing the list of CAs trusted by th
 // TODO: lock?
 static SSL_CTX *ctx;
 
 // TODO: lock?
 static SSL_CTX *ctx;
 
-static int ssl_init_once(int is_server, int enable_compression, char *errbuf, size_t errbuflen)
+int ssl_init_once(int is_server, int enable_compression, char *errbuf, size_t errbuflen)
 {
        static int inited = 0;
        if (inited) return 0;
 {
        static int inited = 0;
        if (inited) return 0;
@@ -123,17 +123,6 @@ die:
        return -1;
 }
 
        return -1;
 }
 
-void init_ssl_or_die(int is_server, int enable_compression)
-{
-       char errbuf[PCAP_ERRBUF_SIZE];
-
-       if (ssl_init_once(is_server, enable_compression, errbuf, sizeof errbuf) < 0)
-       {
-               fprintf(stderr, "%s\n", errbuf);
-               exit(3);
-       }
-}
-
 SSL *ssl_promotion_rw(int is_server, SOCKET in, SOCKET out, char *errbuf, size_t errbuflen)
 {
        if (ssl_init_once(is_server, 1, errbuf, errbuflen) < 0) {
 SSL *ssl_promotion_rw(int is_server, SOCKET in, SOCKET out, char *errbuf, size_t errbuflen)
 {
        if (ssl_init_once(is_server, 1, errbuf, errbuflen) < 0) {
index 6c9504092b5af0cfe901b72dc8994cafa234313f..a769cfee5598d4af54ab11b7aff2de07ab2aecd3 100644 (file)
@@ -50,7 +50,7 @@ extern char ssl_rootfile[PATH_MAX];
  * Utility functions
  */
 
  * Utility functions
  */
 
-void init_ssl_or_die(int is_server, int enable_compression);
+int ssl_init_once(int is_server, int enable_compression, char *errbuf, size_t errbuflen);
 SSL *ssl_promotion(int is_server, SOCKET s, char *errbuf, size_t errbuflen);
 SSL *ssl_promotion_rw(int is_server, SOCKET in, SOCKET out, char *errbuf, size_t errbuflen);
 int ssl_send(SSL *, char const *buffer, int size, char *errbuf, size_t errbuflen);
 SSL *ssl_promotion(int is_server, SOCKET s, char *errbuf, size_t errbuflen);
 SSL *ssl_promotion_rw(int is_server, SOCKET in, SOCKET out, char *errbuf, size_t errbuflen);
 int ssl_send(SSL *, char const *buffer, int size, char *errbuf, size_t errbuflen);