summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>2016-01-04 17:42:12 +0000
committerdfr <dfr@FreeBSD.org>2016-01-04 17:42:12 +0000
commitdf4e91dca395b435603421833e898ae23d1cc091 (patch)
treef182f87b79490aa3a3339d934d55a8d96063f803 /lib
parent004edd0a57108b0ea84e618152d0e6a18c7c0e8e (diff)
downloadFreeBSD-src-df4e91dca395b435603421833e898ae23d1cc091.zip
FreeBSD-src-df4e91dca395b435603421833e898ae23d1cc091.tar.gz
Fix a memory leak in gss_release_oid_set
Diffstat (limited to 'lib')
-rw-r--r--lib/libgssapi/gss_release_oid_set.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/lib/libgssapi/gss_release_oid_set.c b/lib/libgssapi/gss_release_oid_set.c
index bedb90b..a46853a 100644
--- a/lib/libgssapi/gss_release_oid_set.c
+++ b/lib/libgssapi/gss_release_oid_set.c
@@ -32,15 +32,25 @@
OM_uint32
gss_release_oid_set(OM_uint32 *minor_status,
- gss_OID_set *set)
+ gss_OID_set *setp)
{
+ gss_OID_set set;
+ gss_OID o;
+ size_t i;
*minor_status = 0;
- if (set && *set) {
- if ((*set)->elements)
- free((*set)->elements);
- free(*set);
- *set = GSS_C_NO_OID_SET;
+ if (setp) {
+ set = *setp;
+ if (set) {
+ for (i = 0; i < set->count; i++) {
+ o = &set->elements[i];
+ if (o->elements)
+ free(o->elements);
+ }
+ free(set->elements);
+ free(set);
+ *setp = GSS_C_NO_OID_SET;
+ }
}
return (GSS_S_COMPLETE);
}
OpenPOWER on IntegriCloud