diff options
Diffstat (limited to 'lib/hx509/name.c')
| -rw-r--r-- | lib/hx509/name.c | 11 |
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; } |
