mirror of
				https://github.com/brunoos/luasec.git
				synced 2025-10-31 10:25:58 +01:00 
			
		
		
		
	Merge pull request #4 from darkrain42/master
no_compression fix for OpenSSL 0.9.8
This commit is contained in:
		| @@ -62,9 +62,13 @@ static int set_option_flag(const char *opt, unsigned long *flag) | |||||||
|  */ |  */ | ||||||
| static LSEC_SSL_METHOD* str2method(const char *method) | static LSEC_SSL_METHOD* str2method(const char *method) | ||||||
| { | { | ||||||
|  |   if (!strcmp(method, "sslv23"))  return SSLv23_method(); | ||||||
|   if (!strcmp(method, "sslv3"))   return SSLv3_method(); |   if (!strcmp(method, "sslv3"))   return SSLv3_method(); | ||||||
|   if (!strcmp(method, "tlsv1"))   return TLSv1_method(); |   if (!strcmp(method, "tlsv1"))   return TLSv1_method(); | ||||||
|   if (!strcmp(method, "sslv23")) return SSLv23_method(); | #if (OPENSSL_VERSION_NUMBER >= 0x1000100fL) | ||||||
|  |   if (!strcmp(method, "tlsv1_1")) return TLSv1_1_method(); | ||||||
|  |   if (!strcmp(method, "tlsv1_2")) return TLSv1_2_method(); | ||||||
|  | #endif | ||||||
|   return NULL; |   return NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -406,12 +410,6 @@ static int set_verify(lua_State *L) | |||||||
|   int max = lua_gettop(L); |   int max = lua_gettop(L); | ||||||
|   for (i = 2; i <= max; i++) { |   for (i = 2; i <= max; i++) { | ||||||
|     str = luaL_checkstring(L, i); |     str = luaL_checkstring(L, i); | ||||||
| #if !defined(SSL_OP_NO_COMPRESSION) && (OPENSSL_VERSION_NUMBER >= 0x0090800f) && (OPENSSL_VERSION_NUMBER < 0x1000000fL) |  | ||||||
|     /* Version 0.9.8 has a different way to disable compression */ |  | ||||||
|     if (!strcmp(luaL_checkstring(L, i), "no_compression")) |  | ||||||
|       ctx->comp_methods = NULL; |  | ||||||
|     else |  | ||||||
| #endif |  | ||||||
|     if (!set_verify_flag(str, &flag)) { |     if (!set_verify_flag(str, &flag)) { | ||||||
|       lua_pushboolean(L, 0); |       lua_pushboolean(L, 0); | ||||||
|       lua_pushstring(L, "invalid verify option"); |       lua_pushstring(L, "invalid verify option"); | ||||||
| @@ -429,13 +427,21 @@ static int set_verify(lua_State *L) | |||||||
| static int set_options(lua_State *L) | static int set_options(lua_State *L) | ||||||
| { | { | ||||||
|   int i; |   int i; | ||||||
|  |   const char *str; | ||||||
|   unsigned long flag = 0L; |   unsigned long flag = 0L; | ||||||
|   SSL_CTX *ctx = lsec_checkcontext(L, 1); |   SSL_CTX *ctx = lsec_checkcontext(L, 1); | ||||||
|   int max = lua_gettop(L); |   int max = lua_gettop(L); | ||||||
|   /* any option? */ |   /* any option? */ | ||||||
|   if (max > 1) { |   if (max > 1) { | ||||||
|     for (i = 2; i <= max; i++) { |     for (i = 2; i <= max; i++) { | ||||||
|       if (!set_option_flag(luaL_checkstring(L, i), &flag)) { |       str = luaL_checkstring(L, i); | ||||||
|  | #if !defined(SSL_OP_NO_COMPRESSION) && (OPENSSL_VERSION_NUMBER >= 0x0090800f) && (OPENSSL_VERSION_NUMBER < 0x1000000fL) | ||||||
|  |       /* Version 0.9.8 has a different way to disable compression */ | ||||||
|  |       if (!strcmp(str, "no_compression")) | ||||||
|  |         ctx->comp_methods = NULL; | ||||||
|  |       else | ||||||
|  | #endif | ||||||
|  |       if (!set_option_flag(str, &flag)) { | ||||||
|         lua_pushboolean(L, 0); |         lua_pushboolean(L, 0); | ||||||
|         lua_pushstring(L, "invalid option"); |         lua_pushstring(L, "invalid option"); | ||||||
|         return 2; |         return 2; | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ | |||||||
| /* If you need to generate these options again, see options.lua */ | /* If you need to generate these options again, see options.lua */ | ||||||
|  |  | ||||||
| /*  | /*  | ||||||
|   OpenSSL version: OpenSSL 1.0.1 14 Mar 2012 |   OpenSSL version: OpenSSL 1.0.1e 2013-06-12 | ||||||
| */ | */ | ||||||
|  |  | ||||||
| struct ssl_option_s { | struct ssl_option_s { | ||||||
| @@ -123,10 +123,6 @@ static ssl_option_t ssl_options[] = { | |||||||
| #endif | #endif | ||||||
| #if defined(SSL_OP_TLS_ROLLBACK_BUG) | #if defined(SSL_OP_TLS_ROLLBACK_BUG) | ||||||
|   {"tls_rollback_bug", SSL_OP_TLS_ROLLBACK_BUG}, |   {"tls_rollback_bug", SSL_OP_TLS_ROLLBACK_BUG}, | ||||||
| #endif |  | ||||||
| #if !defined(SSL_OP_NO_COMPRESSION) && (OPENSSL_VERSION_NUMBER >= 0x0090800f) && (OPENSSL_VERSION_NUMBER < 0x1000000fL) |  | ||||||
|   /* Add SSL_OP_NO_COMPRESSION manually if built against 0.9.8. */ |  | ||||||
|   {"no_compression", 0L}, |  | ||||||
| #endif | #endif | ||||||
|   {NULL, 0L} |   {NULL, 0L} | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -51,11 +51,6 @@ typedef struct ssl_option_s ssl_option_t; | |||||||
|     print(string.format([[  {"%s", %s},]], name, option)) |     print(string.format([[  {"%s", %s},]], name, option)) | ||||||
|     print([[#endif]]) |     print([[#endif]]) | ||||||
|   end |   end | ||||||
|   print([[ |  | ||||||
| #if !defined(SSL_OP_NO_COMPRESSION) && (OPENSSL_VERSION_NUMBER >= 0x0090800f) && (OPENSSL_VERSION_NUMBER < 0x1000000fL) |  | ||||||
|   /* Add SSL_OP_NO_COMPRESSION manually if built against 0.9.8. */ |  | ||||||
|   {"no_compression", 0L}, |  | ||||||
| #endif]]) |  | ||||||
|   print([[  {NULL, 0L}]]) |   print([[  {NULL, 0L}]]) | ||||||
|   print([[ |   print([[ | ||||||
| }; | }; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user