aboutsummaryrefslogtreecommitdiff
path: root/lib/hx509/name.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/hx509/name.c')
-rw-r--r--lib/hx509/name.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/hx509/name.c b/lib/hx509/name.c
index ee192e593a90..5cb344b6c161 100644
--- a/lib/hx509/name.c
+++ b/lib/hx509/name.c
@@ -952,6 +952,7 @@ int
hx509_general_name_unparse(GeneralName *name, char **str)
{
struct rk_strpool *strpool = NULL;
+ int ret = 0;
*str = NULL;
@@ -978,7 +979,6 @@ hx509_general_name_unparse(GeneralName *name, char **str)
case choice_GeneralName_directoryName: {
Name dir;
char *s;
- int ret;
memset(&dir, 0, sizeof(dir));
dir.element = (enum Name_enum)name->u.directoryName.element;
dir.u.rdnSequence = name->u.directoryName.u.rdnSequence;
@@ -1031,10 +1031,9 @@ hx509_general_name_unparse(GeneralName *name, char **str)
default:
return EINVAL;
}
- if (strpool == NULL)
+ if (ret)
+ rk_strpoolfree(strpool);
+ else if (strpool == NULL || (*str = rk_strpoolcollect(strpool)) == NULL)
return ENOMEM;
-
- *str = rk_strpoolcollect(strpool);
-
- return 0;
+ return ret;
}