#include <string.h>
#include "rsa_locl.h"
+#include <openssl/err.h>
RSA_METHOD *RSA_meth_new(const char *name, int flags)
{
if (meth != NULL) {
meth->name = OPENSSL_strdup(name);
+ if (meth->name == NULL) {
+ OPENSSL_free(meth);
+ RSAerr(RSA_F_RSA_METH_NEW, ERR_R_MALLOC_FAILURE);
+ return NULL;
+ }
meth->flags = flags;
}
void RSA_meth_free(RSA_METHOD *meth)
{
if (meth != NULL) {
- if (meth->name != NULL)
- OPENSSL_free(meth->name);
+ OPENSSL_free(meth->name);
OPENSSL_free(meth);
}
}
if (ret != NULL) {
memcpy(ret, meth, sizeof(*meth));
ret->name = OPENSSL_strdup(meth->name);
+ if (ret->name == NULL) {
+ OPENSSL_free(ret);
+ RSAerr(RSA_F_RSA_METH_DUP, ERR_R_MALLOC_FAILURE);
+ return NULL;
+ }
}
return ret;
int RSA_meth_set1_name(RSA_METHOD *meth, const char *name)
{
+ char *tmpname;
+
+ tmpname = OPENSSL_strdup(name);
+ if (tmpname == NULL) {
+ RSAerr(RSA_F_RSA_METH_SET1_NAME, ERR_R_MALLOC_FAILURE);
+ return 0;
+ }
+
OPENSSL_free(meth->name);
- meth->name = OPENSSL_strdup(name);
+ meth->name = tmpname;
- return meth->name != NULL;
+ return 1;
}
int RSA_meth_get_flags(RSA_METHOD *meth)