diff options
author | Simo Sorce <simo@redhat.com> | 2013-04-03 09:57:24 -0400 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2013-04-03 16:39:11 -0400 |
commit | 2a7d19056d58344496fb24d90d0d02915ea83798 (patch) | |
tree | 17b620234f72e9497d0e131a083d2e059ec12425 /proxy/src/client | |
parent | b5fd9388baba101a3ae7b8a2f88164af2083a0a7 (diff) | |
download | gss-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.c | 26 |
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, |