Fix no-sock
authorMatt Caswell <matt@openssl.org>
Mon, 21 Mar 2016 15:32:40 +0000 (15:32 +0000)
committerMatt Caswell <matt@openssl.org>
Mon, 21 Mar 2016 16:33:59 +0000 (16:33 +0000)
Misc fixes for no-sock

Reviewed-by: Richard Levitte <levitte@openssl.org>
20 files changed:
apps/apps.c
apps/ocsp.c
apps/s_cb.c
apps/s_client.c
apps/s_server.c
apps/s_socket.c
apps/s_time.c
crypto/init.c
include/openssl/ssl.h
ssl/d1_lib.c
test/dtlsv1listentest.c
test/recipes/70-test_sslcertstatus.t
test/recipes/70-test_sslextension.t
test/recipes/70-test_sslsessiontick.t
test/recipes/70-test_sslskewith0p.t
test/recipes/70-test_sslvertol.t
test/recipes/70-test_tlsextms.t
test/recipes/80-test_ssl.t
test/recipes/90-test_networking.t
test/ssltest.c

index 694d090158197743f20cec32fe3514dfc88acd2e..b4307427a5d613e70bdbfb8d24977c82f05f3d2d 100644 (file)
@@ -640,7 +640,7 @@ static int load_pkcs12(BIO *in, const char *desc,
     return ret;
 }
 
-#ifndef OPENSSL_NO_OCSP
+#if !defined(OPENSSL_NO_OCSP) && !defined(OPENSSL_NO_SOCK)
 static int load_cert_crl_http(const char *url, X509 **pcert, X509_CRL **pcrl)
 {
     char *host = NULL, *port = NULL, *path = NULL;
@@ -695,7 +695,7 @@ X509 *load_cert(const char *file, int format, const char *cert_descrip)
     BIO *cert;
 
     if (format == FORMAT_HTTP) {
-#ifndef OPENSSL_NO_OCSP
+#if !defined(OPENSSL_NO_OCSP) && !defined(OPENSSL_NO_SOCK)
         load_cert_crl_http(file, &x, NULL);
 #endif
         return x;
@@ -736,7 +736,7 @@ X509_CRL *load_crl(const char *infile, int format)
     BIO *in = NULL;
 
     if (format == FORMAT_HTTP) {
-#ifndef OPENSSL_NO_OCSP
+#if !defined(OPENSSL_NO_OCSP) && !defined(OPENSSL_NO_SOCK)
         load_cert_crl_http(infile, NULL, &x);
 #endif
         return x;
index dc2a11f26ec4d2acb72b1585818f143a472ccb07..574ed8c67fbf3714ca2fb8dbaec96aaabf4ac4b5 100644 (file)
@@ -117,10 +117,13 @@ static char **lookup_serial(CA_DB *db, ASN1_INTEGER *ser);
 static BIO *init_responder(const char *port);
 static int do_responder(OCSP_REQUEST **preq, BIO **pcbio, BIO *acbio);
 static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp);
+
+# ifndef OPENSSL_NO_SOCK
 static OCSP_RESPONSE *query_responder(BIO *cbio, const char *host,
                                       const char *path,
                                       const STACK_OF(CONF_VALUE) *headers,
                                       OCSP_REQUEST *req, int req_timeout);
+# endif
 
 typedef enum OPTION_choice {
     OPT_ERR = -1, OPT_EOF = 0, OPT_HELP,
@@ -244,7 +247,10 @@ int ocsp_main(int argc, char **argv)
     int noCAfile = 0, noCApath = 0;
     int accept_count = -1, add_nonce = 1, noverify = 0, use_ssl = -1;
     int vpmtouched = 0, badsig = 0, i, ignore_err = 0, nmin = 0, ndays = -1;
-    int req_text = 0, resp_text = 0, req_timeout = -1, ret = 1;
+    int req_text = 0, resp_text = 0, ret = 1;
+#ifndef OPENSSL_NO_SOCK
+    int req_timeout = -1;
+#endif
     long nsec = MAX_VALIDITY_PERIOD, maxage = -1;
     unsigned long sign_flags = 0, verify_flags = 0, rflags = 0;
     OPTION_CHOICE o;
@@ -275,7 +281,9 @@ int ocsp_main(int argc, char **argv)
             outfile = opt_arg();
             break;
         case OPT_TIMEOUT:
+#ifndef OPENSSL_NO_SOCK
             req_timeout = atoi(opt_arg());
+#endif
             break;
         case OPT_URL:
             OPENSSL_free(thost);
@@ -1170,6 +1178,7 @@ static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp)
     return 1;
 }
 
+# ifndef OPENSSL_NO_SOCK
 static OCSP_RESPONSE *query_responder(BIO *cbio, const char *host,
                                       const char *path,
                                       const STACK_OF(CONF_VALUE) *headers,
@@ -1300,5 +1309,6 @@ OCSP_RESPONSE *process_responder(OCSP_REQUEST *req,
     SSL_CTX_free(ctx);
     return resp;
 }
+# endif
 
 #endif
index 66b2a50ddee26156b93b9c1c62e5e4f3ca51e470..b75ff31025d7fcf946bceafe33060bb0fb907826 100644 (file)
@@ -131,8 +131,10 @@ int verify_depth = 0;
 int verify_quiet = 0;
 int verify_error = X509_V_OK;
 int verify_return_error = 0;
+#ifndef OPENSSL_NO_SOCK
 static unsigned char cookie_secret[COOKIE_SECRET_LENGTH];
 static int cookie_initialized = 0;
+#endif
 
 static const char *lookup(int val, const STRINT_PAIR* list, const char* def)
 {
@@ -741,6 +743,7 @@ void tlsext_cb(SSL *s, int client_server, int type,
     (void)BIO_flush(bio);
 }
 
+#ifndef OPENSSL_NO_SOCK
 int generate_cookie_callback(SSL *ssl, unsigned char *cookie,
                              unsigned int *cookie_len)
 {
@@ -803,6 +806,7 @@ int verify_cookie_callback(SSL *ssl, const unsigned char *cookie,
 
     return 0;
 }
+#endif
 
 /*
  * Example of extended certificate handling. Where the standard support of
index 6f22e6e336ee540cb07ab3ee18835e267fc9ce31..5b4cd4839fe29f53c6f279909f15bc77fe308dc7 100644 (file)
 #include <errno.h>
 #include <openssl/e_os2.h>
 
+#ifndef OPENSSL_NO_SOCK
+
 /*
  * With IPv6, it looks like Digital has mixed up the proper order of
  * recursive header file inclusion, resulting in the compiler complaining
@@ -2757,3 +2759,5 @@ static int ocsp_resp_cb(SSL *s, void *arg)
     OCSP_RESPONSE_free(rsp);
     return 1;
 }
+
+#endif
index e660eecaa17c30205ca4915b49708454e65b8a6f..b33d76860c7205bb6e53c1d2f38dc7aee26d91f8 100644 (file)
 
 #include <openssl/e_os2.h>
 
+#ifndef OPENSSL_NO_SOCK
+
 /*
  * With IPv6, it looks like Digital has mixed up the proper order of
  * recursive header file inclusion, resulting in the compiler complaining
@@ -3363,3 +3365,5 @@ static void free_sessions(void)
     }
     first = NULL;
 }
+
+#endif
index 00556bccb0ced139999d3427ff34434ea4fe96fd..465321754cbbe7f0e3ea1e1749a0a99deca076fa 100644 (file)
 #include <string.h>
 #include <errno.h>
 #include <signal.h>
+#include <openssl/opensslconf.h>
 
 /*
  * With IPv6, it looks like Digital has mixed up the proper order of
index f68002a224091841837b9af3b086747ebb282470..6890bc1be00c033658e07173d72c5ffcf6738931 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 
+#include <openssl/opensslconf.h>
+
+#ifndef OPENSSL_NO_SOCK
+
 #define USE_SOCKETS
 #include "apps.h"
 #include <openssl/x509.h>
@@ -474,3 +478,4 @@ static SSL *doConnection(SSL *scon, const char *host, SSL_CTX *ctx)
 
     return serverCon;
 }
+#endif /* OPENSSL_NO_SOCK */
index d3167804d97a22c89906bd1c49df98c2511675d1..404d9c0e9566f9ffed9675add144f3b44a6d9c60 100644 (file)
@@ -490,7 +490,9 @@ void OPENSSL_cleanup(void)
     ENGINE_cleanup();
 #endif
     CRYPTO_cleanup_all_ex_data();
+#ifndef OPENSSL_NO_SOCK
     BIO_sock_cleanup();
+#endif
     EVP_cleanup();
     OBJ_cleanup();
     base_inited = 0;
index 3d440b68cb5f7cf8a3fafca35159165d60aa5990..980cb6226f0d9451fb9deca136f8dba509fbdfb7 100644 (file)
@@ -1892,7 +1892,9 @@ void SSL_trace(int write_p, int version, int content_type,
 __owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c);
 # endif
 
+# ifndef OPENSSL_NO_SOCK
 int DTLSv1_listen(SSL *s, BIO_ADDR *client);
+# endif
 
 # ifndef OPENSSL_NO_CT
 
index 8f399d07e9982965725ef7d89a918e938165691f..6d75225cce6ab61779ed13a5137c8ae549587f2a 100644 (file)
@@ -458,7 +458,7 @@ static void get_current_time(struct timeval *t)
 #define LISTEN_SUCCESS              2
 #define LISTEN_SEND_VERIFY_REQUEST  1
 
-
+#ifndef OPENSSL_NO_SOCK
 int DTLSv1_listen(SSL *s, BIO_ADDR *client)
 {
     int next, n, ret = 0, clearpkt = 0;
@@ -866,6 +866,7 @@ end:
     }
     return ret;
 }
+#endif
 
 static int dtls1_set_handshake_header(SSL *s, int htype, unsigned long len)
 {
index 6eef1b5e4ebd7e7c5e0517fb069c52ac3d8a9a5f..6eb2e5ccfbb8abae301d5317ae3792884b80beb7 100644 (file)
@@ -65,6 +65,8 @@
 #endif
 #include "e_os.h"
 
+#ifndef OPENSSL_NO_SOCK
+
 /* Just a ClientHello without a cookie */
 static const unsigned char clienthello_nocookie[] = {
     0x16, /* Handshake */
@@ -339,7 +341,7 @@ static struct {
     }
 };
 
-#define COOKIE_LEN  20
+# define COOKIE_LEN  20
 
 static int cookie_gen(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len)
 {
@@ -368,9 +370,11 @@ static int cookie_verify(SSL *ssl, const unsigned char *cookie,
 
     return 1;
 }
+#endif
 
 int main(void)
 {
+#ifndef OPENSSL_NO_SOCK
     SSL_CTX *ctx = NULL;
     SSL *ssl = NULL;
     BIO *outbio = NULL;
@@ -459,9 +463,12 @@ int main(void)
     SSL_CTX_free(ctx);
     BIO_free(inbio);
     OPENSSL_free(peer);
-#ifndef OPENSSL_NO_CRYPTO_MDEBUG
+# ifndef OPENSSL_NO_CRYPTO_MDEBUG
     CRYPTO_mem_leaks_fp(stderr);
-#endif
+# endif
     return success ? 0 : 1;
+#else
+    printf("DTLSv1_listen() is not supported by this build - skipping\n");
+    return 0;
+#endif
 }
-
index 37265ed07aa5fbfcbad0e3c60c7f8a159b96fa3c..48014e2af3d1249052c8e22658e42856f724347c 100755 (executable)
@@ -66,6 +66,9 @@ plan skip_all => "TLSProxy isn't usable on $^O"
 plan skip_all => "$test_name needs the dynamic engine feature enabled"
     if disabled("engine") || disabled("dynamic-engine");
 
+plan skip_all => "$test_name needs the sock feature enabled"
+    if disabled("sock");
+
 $ENV{OPENSSL_ia32cap} = '~0x200000200000000';
 my $proxy = TLSProxy::Proxy->new(
     \&certstatus_filter,
index 1641daa344988b44d469933db1e190490ee47abc..92c6762ffce850074c25b8a003d8c22f037a0660 100755 (executable)
@@ -66,6 +66,9 @@ plan skip_all => "TLSProxy isn't usable on $^O"
 plan skip_all => "$test_name needs the dynamic engine feature enabled"
     if disabled("engine") || disabled("dynamic-engine");
 
+plan skip_all => "$test_name needs the sock feature enabled"
+    if disabled("sock");
+
 $ENV{OPENSSL_ia32cap} = '~0x200000200000000';
 my $proxy = TLSProxy::Proxy->new(
     \&extension_filter,
index caab77745e46d64c87f7584906ee6e0aa953182f..704573881c9d037aa5fe5f8e42fc9ee6f0109c6a 100755 (executable)
@@ -67,6 +67,9 @@ plan skip_all => "TLSProxy isn't usable on $^O"
 plan skip_all => "$test_name needs the dynamic engine feature enabled"
     if disabled("engine") || disabled("dynamic-engine");
 
+plan skip_all => "$test_name needs the sock feature enabled"
+    if disabled("sock");
+
 $ENV{OPENSSL_ia32cap} = '~0x200000200000000';
 
 sub checkmessages($$$$$$);
index b0cc9ffb59f84ba2cf8783e57e9fc0b2c86c8719..0bed4bffbbad264a7e1174edaca57cde256be353 100755 (executable)
@@ -69,6 +69,9 @@ plan skip_all => "$test_name needs the dynamic engine feature enabled"
 plan skip_all => "dh is not supported by this OpenSSL build"
     if disabled("dh");
 
+plan skip_all => "$test_name needs the sock feature enabled"
+    if disabled("sock");
+
 $ENV{OPENSSL_ia32cap} = '~0x200000200000000';
 my $proxy = TLSProxy::Proxy->new(
     \&ske_0_p_filter,
index 0795733fb95c9dfe414b532bd8ea4a4ebbf1555c..a3285a67dd8526880e127edd7e0031e27ad51821 100755 (executable)
@@ -66,6 +66,9 @@ plan skip_all => "TLSProxy isn't usable on $^O"
 plan skip_all => "$test_name needs the dynamic engine feature enabled"
     if disabled("engine") || disabled("dynamic-engine");
 
+plan skip_all => "$test_name needs the sock feature enabled"
+    if disabled("sock");
+
 $ENV{OPENSSL_ia32cap} = '~0x200000200000000';
 my $proxy = TLSProxy::Proxy->new(
     \&vers_tolerance_filter,
index bc3b7878008301c5991a4aa9c4a6be21a24095bc..5c41a908a262b8fb1d03a1ffc0544cac2481b133 100644 (file)
@@ -67,6 +67,9 @@ plan skip_all => "TLSProxy isn't usable on $^O"
 plan skip_all => "$test_name needs the dynamic engine feature enabled"
     if disabled("engine") || disabled("dynamic-engine");
 
+plan skip_all => "$test_name needs the sock feature enabled"
+    if disabled("sock");
+
 $ENV{OPENSSL_ia32cap} = '~0x200000200000000';
 
 sub checkmessages($$$$$);
index da32fac6c746da1090a3888ed6b8308189ecf648..f1ffe9a01c97ef576b8c9ca8c004a9537f26a046 100644 (file)
@@ -435,14 +435,14 @@ sub testssl {
 
         SKIP: {
             skip "No IPv4 available on this machine", 1
-                unless have_IPv4();
+                unless !disabled("sock") && have_IPv4();
             ok(run(test([@ssltest, "-ipv4", @extra])),
                'test TLS via IPv4');
           }
           
         SKIP: {
             skip "No IPv6 available on this machine", 1
-                unless have_IPv6();
+                unless !disabled("sock") && have_IPv6();
             ok(run(test([@ssltest, "-ipv6", @extra])),
                'test TLS via IPv6');
           }
index 5d876ca51c7f33de1937c0c25385787cfc63ec90..408d89af6a3695137b22a421c9c5c3d423e67e00 100644 (file)
@@ -66,6 +66,9 @@ plan skip_all => "TLSProxy isn't usable on $^O"
 plan skip_all => "$test_name needs the dynamic engine feature enabled"
     if disabled("engine") || disabled("dynamic-engine");
 
+plan skip_all => "$test_name needs the sock feature enabled"
+    if disabled("sock");
+
 $ENV{OPENSSL_ia32cap} = '~0x200000200000000';
 
 my $proxy = TLSProxy::Proxy->new(
index cf9f060086fbaf038d9b94586375a65dfaecdfaf..a2dd4454ad8610b3dc0dc41971bc995bb6dab5fd 100644 (file)
@@ -1234,11 +1234,15 @@ int main(int argc, char *argv[])
             CAfile = *(++argv);
         } else if (strcmp(*argv, "-bio_pair") == 0) {
             bio_type = BIO_PAIR;
-        } else if (strcmp(*argv, "-ipv4") == 0) {
+        }
+#ifndef OPENSSL_NO_SOCK
+        else if (strcmp(*argv, "-ipv4") == 0) {
             bio_type = BIO_IPV4;
         } else if (strcmp(*argv, "-ipv6") == 0) {
             bio_type = BIO_IPV6;
-        } else if (strcmp(*argv, "-f") == 0) {
+        }
+#endif
+        else if (strcmp(*argv, "-f") == 0) {
             force = 1;
         } else if (strcmp(*argv, "-time") == 0) {
             print_time = 1;
@@ -1857,6 +1861,7 @@ int main(int argc, char *argv[])
         case BIO_PAIR:
             ret = doit_biopair(s_ssl, c_ssl, bytes, &s_time, &c_time);
             break;
+#ifndef OPENSSL_NO_SOCK
         case BIO_IPV4:
             ret = doit_localhost(s_ssl, c_ssl, BIO_FAMILY_IPV4,
                                  bytes, &s_time, &c_time);
@@ -1865,6 +1870,12 @@ int main(int argc, char *argv[])
             ret = doit_localhost(s_ssl, c_ssl, BIO_FAMILY_IPV6,
                                  bytes, &s_time, &c_time);
             break;
+#else
+        case BIO_IPV4:
+        case BIO_IPV6:
+            ret = 1;
+            goto err;
+#endif
         }
         if (ret)  break;
     }
@@ -1931,6 +1942,7 @@ int main(int argc, char *argv[])
     EXIT(ret);
 }
 
+#ifndef OPENSSL_NO_SOCK
 int doit_localhost(SSL *s_ssl, SSL *c_ssl, int family, long count,
                    clock_t *s_time, clock_t *c_time)
 {
@@ -2170,12 +2182,12 @@ int doit_localhost(SSL *s_ssl, SSL *c_ssl, int family, long count,
 
     if (verbose)
         print_details(c_ssl, "DONE via TCP connect: ");
-#ifndef OPENSSL_NO_NEXTPROTONEG
+# ifndef OPENSSL_NO_NEXTPROTONEG
     if (verify_npn(c_ssl, s_ssl) < 0) {
         ret = 1;
         goto end;
     }
-#endif
+# endif
     if (verify_serverinfo() < 0) {
         fprintf(stderr, "Server info verify error\n");
         ret = 1;
@@ -2215,6 +2227,7 @@ int doit_localhost(SSL *s_ssl, SSL *c_ssl, int family, long count,
 
     return ret;
 }
+#endif
 
 int doit_biopair(SSL *s_ssl, SSL *c_ssl, long count,
                  clock_t *s_time, clock_t *c_time)