aboutsummaryrefslogtreecommitdiff
path: root/crypto/heimdal/lib/hx509/name.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/heimdal/lib/hx509/name.c')
-rw-r--r--crypto/heimdal/lib/hx509/name.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/crypto/heimdal/lib/hx509/name.c b/crypto/heimdal/lib/hx509/name.c
index efd7b703422f..ffb67c85e574 100644
--- a/crypto/heimdal/lib/hx509/name.c
+++ b/crypto/heimdal/lib/hx509/name.c
@@ -938,6 +938,7 @@ int
hx509_general_name_unparse(GeneralName *name, char **str)
{
struct rk_strpool *strpool = NULL;
+ int ret = 0;
*str = NULL;
@@ -964,7 +965,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 = name->u.directoryName.element;
dir.u.rdnSequence = name->u.directoryName.u.rdnSequence;
@@ -1017,10 +1017,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;
}