diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2010-03-03 19:56:34 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2010-03-03 19:56:34 +0000 |
commit | ebaa2cf5b20d9048f47c4687b2130f8d6751a964 (patch) | |
tree | a003c2155572527152bbfa827087979c0369e60e | |
parent | cca1cd9a3447dd067503e4a85ebd1679ee78a48e (diff) |
PR: 2183
PR#1999 broke fork detection by assuming HAVE_FORK was set for all platforms.
Include original HAVE_FORK detection logic while allowing it to be
overridden on specific platforms with -DHAVE_FORK=1 or -DHAVE_FORK=0
-rw-r--r-- | apps/speed.c | 16 | ||||
-rw-r--r-- | crypto/x509v3/v3_conf.c | 15 |
2 files changed, 26 insertions, 5 deletions
diff --git a/apps/speed.c b/apps/speed.c index e4389f8a5a..1882239ce3 100644 --- a/apps/speed.c +++ b/apps/speed.c @@ -184,12 +184,18 @@ #include <openssl/ecdh.h> #endif -#if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_NETWARE) -# define NO_FORK 1 -#elif HAVE_FORK -# undef NO_FORK +#ifndef HAVE_FORK +# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_NETWARE) +# define HAVE_FORK 0 +# else +# define HAVE_FORK 1 +# endif +#endif + +#if HAVE_FORK +#undef NO_FORK #else -# define NO_FORK 1 +#define NO_FORK #endif #undef BUFSIZE diff --git a/crypto/x509v3/v3_conf.c b/crypto/x509v3/v3_conf.c index 6730f9a6ee..24b21d4ea2 100644 --- a/crypto/x509v3/v3_conf.c +++ b/crypto/x509v3/v3_conf.c @@ -317,6 +317,19 @@ static unsigned char *generic_asn1(char *value, X509V3_CTX *ctx, long *ext_len) return ext_der; } +static void delete_ext(STACK_OF(X509_EXTENSION) *sk, X509_EXTENSION *dext) + { + int idx; + ASN1_OBJECT *obj; + obj = X509_EXTENSION_get_object(dext); + while ((idx = X509_EXTENSION_get_by_OBJ(sk, obj, -1)) >= 0) + { + X509_EXTENSION *tmpext= X509_get_ext(sk, idx); + X509_del_ext(sk, idx); + X509_EXTENSION_free(tmpext); + } + } + /* This is the main function: add a bunch of extensions based on a config file * section to an extension STACK. */ @@ -335,6 +348,8 @@ int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, char *section, val = sk_CONF_VALUE_value(nval, i); if (!(ext = X509V3_EXT_nconf(conf, ctx, val->name, val->value))) return 0; + if (ctx->flags == X509V3_CTX_FLAG_REPLACE) + delete_ext(*sk, ext); if (sk) X509v3_add_ext(sk, ext, -1); X509_EXTENSION_free(ext); } |