summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordaurnimator <quae@daurnimator.com>2017-04-03 16:20:54 +1000
committerdaurnimator <quae@daurnimator.com>2017-04-03 16:20:54 +1000
commita0846fc69bb3e56bf3647f97c8e3ff1df8eacb2e (patch)
treed5747e6bfe3178805fb6b1a4462fc519fe78b5fa
parent42018dfc1c1a3baee7b7e2aaa3cf21554341a61e (diff)
downloadluaossl-a0846fc69bb3e56bf3647f97c8e3ff1df8eacb2e.tar.gz
luaossl-a0846fc69bb3e56bf3647f97c8e3ff1df8eacb2e.tar.bz2
luaossl-a0846fc69bb3e56bf3647f97c8e3ff1df8eacb2e.zip
Move value='DER' check out of type dispatch in xe_new
-rw-r--r--src/openssl.c39
1 files changed, 19 insertions, 20 deletions
diff --git a/src/openssl.c b/src/openssl.c
index 5835a0a..a11e6ae 100644
--- a/src/openssl.c
+++ b/src/openssl.c
@@ -4983,35 +4983,34 @@ static int xe_new(lua_State *L) {
4983 CONF *conf = NULL; 4983 CONF *conf = NULL;
4984 X509V3_CTX cbuf = { 0 }, *ctx = NULL; 4984 X509V3_CTX cbuf = { 0 }, *ctx = NULL;
4985 X509_EXTENSION **ud; 4985 X509_EXTENSION **ud;
4986 _Bool crit;
4986 4987
4987 lua_settop(L, 3); 4988 lua_settop(L, 3);
4988 ud = prepsimple(L, X509_EXT_CLASS); 4989 ud = prepsimple(L, X509_EXT_CLASS);
4989 4990
4990 switch (lua_type(L, 3)) { 4991 if (xe_new_isder(value, &crit)) {
4991 case LUA_TNONE:
4992 case LUA_TNIL:
4993 break;
4994 case LUA_TSTRING: {
4995 size_t len; 4992 size_t len;
4996 const char *cdata = lua_tolstring(L, 3, &len); 4993 const char *cdata = lua_tolstring(L, 3, &len);
4997 _Bool crit; 4994 if (!(obj = OBJ_txt2obj(name, 0)))
4998 4995 goto error;
4999 if (xe_new_isder(value, &crit)) { 4996 if (!(oct = ASN1_STRING_new()))
5000 if (!(obj = OBJ_txt2obj(name, 0))) 4997 goto error;
5001 goto error; 4998 if (!ASN1_STRING_set(oct, cdata, len))
5002 if (!(oct = ASN1_STRING_new())) 4999 goto error;
5003 goto error; 5000 if (!(*ud = X509_EXTENSION_create_by_OBJ(NULL, obj, crit, oct)))
5004 if (!ASN1_STRING_set(oct, cdata, len)) 5001 goto error;
5005 goto error;
5006 if (!(*ud = X509_EXTENSION_create_by_OBJ(NULL, obj, crit, oct)))
5007 goto error;
5008 5002
5009 ASN1_OBJECT_free(obj); 5003 ASN1_OBJECT_free(obj);
5010 ASN1_STRING_free(oct); 5004 ASN1_STRING_free(oct);
5011 5005
5012 return 1; 5006 return 1;
5013 } 5007 }
5014 5008
5009 switch (lua_type(L, 3)) {
5010 case LUA_TNONE:
5011 case LUA_TNIL:
5012 break;
5013 case LUA_TSTRING: {
5015 if (!(conf = loadconf(L, 3))) 5014 if (!(conf = loadconf(L, 3)))
5016 goto error; 5015 goto error;
5017 5016