Fix compilation with no-nextprotoneg.
authorPiotr Sikora <piotr@cloudflare.com>
Wed, 13 Nov 2013 23:40:01 +0000 (15:40 -0800)
committerDr. Stephen Henson <steve@openssl.org>
Thu, 14 Nov 2013 01:20:58 +0000 (01:20 +0000)
PR#3106

apps/apps.c
apps/apps.h
apps/s_client.c
apps/s_server.c
ssl/ssl.h
ssl/ssl_lib.c
ssl/t1_lib.c
util/ssleay.num

index ae5b00f2c25b56b667856506cd02984f2afda2c8..999dc80fc40e1a578644fb864c4dda263a464d78 100644 (file)
@@ -2890,7 +2890,7 @@ void jpake_server_auth(BIO *out, BIO *conn, const char *secret)
 
 #endif
 
-#if !defined(OPENSSL_NO_TLSEXT) && !defined(OPENSSL_NO_NEXTPROTONEG)
+#ifndef OPENSSL_NO_TLSEXT
 /* next_protos_parse parses a comma separated list of strings into a string
  * in a format suitable for passing to SSL_CTX_set_next_protos_advertised.
  *   outlen: (output) set to the length of the resulting buffer on success.
@@ -2932,7 +2932,7 @@ unsigned char *next_protos_parse(unsigned short *outlen, const char *in)
        *outlen = len + 1;
        return out;
        }
-#endif  /* !OPENSSL_NO_TLSEXT && !OPENSSL_NO_NEXTPROTONEG */
+#endif  /* ndef OPENSSL_NO_TLSEXT */
 
 void print_cert_checks(BIO *bio, X509 *x,
                                const unsigned char *checkhost,
index 692425eeda9e6f9a5bb821022d5ee61f81bcd3c3..4b4ae8b38d488d8453cafd0bad80546936c78df4 100644 (file)
@@ -337,9 +337,9 @@ void jpake_client_auth(BIO *out, BIO *conn, const char *secret);
 void jpake_server_auth(BIO *out, BIO *conn, const char *secret);
 #endif
 
-#if !defined(OPENSSL_NO_TLSEXT) && !defined(OPENSSL_NO_NEXTPROTONEG)
+#ifndef OPENSSL_NO_TLSEXT
 unsigned char *next_protos_parse(unsigned short *outlen, const char *in);
-#endif  /* !OPENSSL_NO_TLSEXT && !OPENSSL_NO_NEXTPROTONEG */
+#endif  /* ndef OPENSSL_NO_TLSEXT */
 
 void print_cert_checks(BIO *bio, X509 *x,
                                const unsigned char *checkhost,
index 421cb017236fb997065b4f1248efa5fa74918050..3d607ea90d088f72cedf9f5350a54cec27061c83 100644 (file)
@@ -368,8 +368,8 @@ static void sc_usage(void)
        BIO_printf(bio_err," -proof_debug      - request an audit proof and print its hex dump\n");
 # ifndef OPENSSL_NO_NEXTPROTONEG
        BIO_printf(bio_err," -nextprotoneg arg - enable NPN extension, considering named protocols supported (comma-separated list)\n");
-       BIO_printf(bio_err," -alpn arg         - enable ALPN extension, considering named protocols supported (comma-separated list)\n");
 # endif
+       BIO_printf(bio_err," -alpn arg         - enable ALPN extension, considering named protocols supported (comma-separated list)\n");
 #ifndef OPENSSL_NO_TLSEXT
        BIO_printf(bio_err," -serverinfo types - send empty ClientHello extensions (comma-separated numbers)\n");
 #endif
@@ -642,8 +642,8 @@ int MAIN(int argc, char **argv)
         {NULL,0};
 # ifndef OPENSSL_NO_NEXTPROTONEG
        const char *next_proto_neg_in = NULL;
-       const char *alpn_in = NULL;
 # endif
+       const char *alpn_in = NULL;
 # define MAX_SI_TYPES 100
        unsigned short serverinfo_types[MAX_SI_TYPES];
        int serverinfo_types_count = 0;
@@ -1001,12 +1001,12 @@ static char *jpake_secret = NULL;
                        if (--argc < 1) goto bad;
                        next_proto_neg_in = *(++argv);
                        }
+# endif
                else if (strcmp(*argv,"-alpn") == 0)
                        {
                        if (--argc < 1) goto bad;
                        alpn_in = *(++argv);
                        }
-# endif
                else if (strcmp(*argv,"-serverinfo") == 0)
                        {
                        char *c;
@@ -2305,6 +2305,7 @@ static void print_stuff(BIO *bio, SSL *s, int full)
                BIO_write(bio, proto, proto_len);
                BIO_write(bio, "\n", 1);
        }
+# endif
        {
                const unsigned char *proto;
                unsigned int proto_len;
@@ -2318,7 +2319,6 @@ static void print_stuff(BIO *bio, SSL *s, int full)
                else
                        BIO_printf(bio, "No ALPN negotiated\n");
        }
-# endif
 #endif
 
        {
index 8fd47c4c3f29145bec0e7f97cccde4bac63f3c57..8fbe9c5113a743f5d8faf33c79203dc3f2910272 100644 (file)
@@ -1025,9 +1025,9 @@ int MAIN(int argc, char *argv[])
 # ifndef OPENSSL_NO_NEXTPROTONEG
        const char *next_proto_neg_in = NULL;
        tlsextnextprotoctx next_proto = { NULL, 0};
+# endif
        const char *alpn_in = NULL;
        tlsextalpnctx alpn_ctx = { NULL, 0};
-# endif
 #endif
 #ifndef OPENSSL_NO_PSK
        /* by default do not send a PSK identity hint */
@@ -1477,12 +1477,12 @@ int MAIN(int argc, char *argv[])
                        if (--argc < 1) goto bad;
                        next_proto_neg_in = *(++argv);
                        }
+# endif
                else if (strcmp(*argv,"-alpn") == 0)
                        {
                        if (--argc < 1) goto bad;
                        alpn_in = *(++argv);
                        }
-# endif
 #endif
 #if !defined(OPENSSL_NO_JPAKE) && !defined(OPENSSL_NO_PSK)
                else if (strcmp(*argv,"-jpake") == 0)
@@ -2101,8 +2101,10 @@ end:
                BIO_free(authz_in);
        if (serverinfo_in != NULL)
                BIO_free(serverinfo_in);
+# ifndef OPENSSL_NO_NEXTPROTONEG
        if (next_proto.data)
                OPENSSL_free(next_proto.data);
+# endif
        if (alpn_ctx.data)
                OPENSSL_free(alpn_ctx.data);
 #endif
index a33b0fbc0d54cfbe433e712e06d1d9f4c8d28496..480da2fbc8f1004a8dc4570210a98d1667b59021 100644 (file)
--- a/ssl/ssl.h
+++ b/ssl/ssl.h
@@ -1223,17 +1223,17 @@ void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s,
                                                 const unsigned char *in,
                                                 unsigned int inlen, void *arg),
                                      void *arg);
+void SSL_get0_next_proto_negotiated(const SSL *s,
+                                   const unsigned char **data, unsigned *len);
+#endif
 
 int SSL_select_next_proto(unsigned char **out, unsigned char *outlen,
                          const unsigned char *in, unsigned int inlen,
                          const unsigned char *client, unsigned int client_len);
-void SSL_get0_next_proto_negotiated(const SSL *s,
-                                   const unsigned char **data, unsigned *len);
 
 #define OPENSSL_NPN_UNSUPPORTED        0
 #define OPENSSL_NPN_NEGOTIATED 1
 #define OPENSSL_NPN_NO_OVERLAP 2
-#endif
 
 int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char* protos,
                            unsigned protos_len);
index f5ad4c4a665c96e5137cef835aaf57cf677fb1c3..f401f6a052f3c2ffe8bfa75951da0297e27f22aa 100644 (file)
@@ -1608,7 +1608,6 @@ int SSL_get_servername_type(const SSL *s)
        return -1;
        }
 
-# ifndef OPENSSL_NO_NEXTPROTONEG
 /* SSL_select_next_proto implements the standard protocol selection. It is
  * expected that this function is called from the callback set by
  * SSL_CTX_set_next_proto_select_cb.
@@ -1675,6 +1674,7 @@ int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, const unsi
        return status;
        }
 
+# ifndef OPENSSL_NO_NEXTPROTONEG
 /* SSL_get0_next_proto_negotiated sets *data and *len to point to the client's
  * requested protocol for this connection and returns 0. If the client didn't
  * request any protocol, then *data is set to NULL.
index 65e997f716a4ff4732fbfc0ee1ada4e491101223..274f84631ec805a5a9dca31c23aba31ad700bcef 100644 (file)
@@ -2503,8 +2503,10 @@ static int ssl_scan_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char
                        {
                        if (tls1_alpn_handle_client_hello(s, data, size, al) != 0)
                                return 0;
+#ifndef OPENSSL_NO_NEXTPROTONEG
                        /* ALPN takes precedence over NPN. */
                        s->s3->next_proto_neg_seen = 0;
+#endif
                        }
 
                /* session ticket processed earlier */
index 7e1e98f900ebd32c3bb2b88eafd5b9f8a2ffb146..8c6ab0c56c47ac14f16aafc7545142eae8ebae30 100755 (executable)
@@ -315,7 +315,7 @@ SSL_CTX_set_next_protos_adv_cb          355 EXIST:VMS:FUNCTION:NEXTPROTONEG
 SSL_get0_next_proto_negotiated          356    EXIST::FUNCTION:NEXTPROTONEG
 SSL_get_selected_srtp_profile           357    EXIST::FUNCTION:
 SSL_CTX_set_tlsext_use_srtp             358    EXIST::FUNCTION:
-SSL_select_next_proto                   359    EXIST::FUNCTION:NEXTPROTONEG
+SSL_select_next_proto                   359    EXIST::FUNCTION:TLSEXT
 SSL_get_srtp_profiles                   360    EXIST::FUNCTION:
 SSL_CTX_set_next_proto_select_cb        361    EXIST:!VMS:FUNCTION:NEXTPROTONEG
 SSL_CTX_set_next_proto_sel_cb           361    EXIST:VMS:FUNCTION:NEXTPROTONEG