X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fex_data.c;h=42b8b9d1baeabc99b58b52f9932807027740c07e;hp=c858b518ffaed0ece67ed736fe4e8ed4fce78c7d;hb=10061c7c47accb36d3abfba12a29cc1502780ac0;hpb=58964a492275ca9a59a0cd9c8155cb2491b4b909 diff --git a/crypto/ex_data.c b/crypto/ex_data.c index c858b518ff..42b8b9d1ba 100644 --- a/crypto/ex_data.c +++ b/crypto/ex_data.c @@ -72,20 +72,22 @@ int (*new_func)(); int (*dup_func)(); void (*free_func)(); { + int ret= -1; CRYPTO_EX_DATA_FUNCS *a; + MemCheck_off(); if (*skp == NULL) *skp=sk_new_null(); if (*skp == NULL) { CRYPTOerr(CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX,ERR_R_MALLOC_FAILURE); - return(-1); + goto err; } a=(CRYPTO_EX_DATA_FUNCS *)Malloc(sizeof(CRYPTO_EX_DATA_FUNCS)); if (a == NULL) { CRYPTOerr(CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX,ERR_R_MALLOC_FAILURE); - return(-1); + goto err; } a->argl=argl; a->argp=argp; @@ -98,10 +100,13 @@ void (*free_func)(); { CRYPTOerr(CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX,ERR_R_MALLOC_FAILURE); Free(a); - return(-1); + goto err; } } sk_value(*skp,idx)=(char *)a; + ret=idx; +err: + MemCheck_on(); return(idx); }