summaryrefslogtreecommitdiffstats
path: root/proxy/src/client
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2013-04-03 09:57:24 -0400
committerSimo Sorce <simo@redhat.com>2013-04-03 16:39:11 -0400
commit2a7d19056d58344496fb24d90d0d02915ea83798 (patch)
tree17b620234f72e9497d0e131a083d2e059ec12425 /proxy/src/client
parentb5fd9388baba101a3ae7b8a2f88164af2083a0a7 (diff)
downloadgss-proxy-2a7d19056d58344496fb24d90d0d02915ea83798.tar.gz
gss-proxy-2a7d19056d58344496fb24d90d0d02915ea83798.tar.xz
gss-proxy-2a7d19056d58344496fb24d90d0d02915ea83798.zip
Fix resource leaks found by Coverity
Signed-off-by: Simo Sorce <simo@redhat.com>
Diffstat (limited to 'proxy/src/client')
-rw-r--r--proxy/src/client/gpm_import_and_canon_name.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/proxy/src/client/gpm_import_and_canon_name.c b/proxy/src/client/gpm_import_and_canon_name.c
index daeb660..ebc987f 100644
--- a/proxy/src/client/gpm_import_and_canon_name.c
+++ b/proxy/src/client/gpm_import_and_canon_name.c
@@ -106,6 +106,7 @@ OM_uint32 gpm_import_name(OM_uint32 *minor_status,
gssx_name **output_name)
{
gssx_name *name;
+ uint32_t maj, min;
int ret;
if (!minor_status) {
@@ -122,25 +123,34 @@ OM_uint32 gpm_import_name(OM_uint32 *minor_status,
/* ignore call_ctx for now */
+ maj = GSS_S_FAILURE;
+
name = calloc(1, sizeof(gssx_name));
if (!name) {
- *minor_status = ENOMEM;
- return GSS_S_FAILURE;
+ ret = ENOMEM;
+ goto done;
}
ret = gp_conv_buffer_to_gssx(input_name_buffer, &name->display_name);
if (ret) {
- *minor_status = ret;
- return GSS_S_FAILURE;
+ goto done;
}
+
ret = gp_conv_oid_to_gssx(input_name_type, &name->name_type);
if (ret) {
- *minor_status = ret;
- return GSS_S_FAILURE;
+ goto done;
}
- *output_name = name;
- return GSS_S_COMPLETE;
+ maj = GSS_S_COMPLETE;
+
+done:
+ *minor_status = ret;
+ if (maj == GSS_S_COMPLETE) {
+ *output_name = name;
+ } else {
+ (void)gpm_release_name(&min, &name);
+ }
+ return maj;
}
OM_uint32 gpm_export_name(OM_uint32 *minor_status,