projects
/
mech_eap.orig
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
022b1f9
)
don't leak defaultCreds
author
Luke Howard
<lukeh@padl.com>
Fri, 18 Mar 2011 12:59:24 +0000
(23:59 +1100)
committer
Luke Howard
<lukeh@padl.com>
Fri, 18 Mar 2011 12:59:24 +0000
(23:59 +1100)
util_cred.c
patch
|
blob
|
history
diff --git
a/util_cred.c
b/util_cred.c
index
b9f8be0
..
1a18911
100644
(file)
--- a/
util_cred.c
+++ b/
util_cred.c
@@
-289,9
+289,10
@@
gssEapAcquireCred(OM_uint32 *minor,
cred->flags |= CRED_FLAG_PASSWORD;
} else if (defaultCreds.value != NULL) {
cred->flags |= CRED_FLAG_PASSWORD;
} else if (defaultCreds.value != NULL) {
- major = duplicateBuffer(minor, &defaultCreds, &cred->password);
- if (GSS_ERROR(major))
- goto cleanup;
+ cred->password = defaultCreds;
+
+ defaultCreds.length = 0;
+ defaultCreds.value = NULL;
cred->flags |= CRED_FLAG_PASSWORD;
} else if (cred->flags & CRED_FLAG_INITIATE) {
cred->flags |= CRED_FLAG_PASSWORD;
} else if (cred->flags & CRED_FLAG_INITIATE) {
@@
-333,6
+334,10
@@
gssEapAcquireCred(OM_uint32 *minor,
cleanup:
if (GSS_ERROR(major))
gssEapReleaseCred(&tmpMinor, &cred);
cleanup:
if (GSS_ERROR(major))
gssEapReleaseCred(&tmpMinor, &cred);
+ if (defaultCreds.value != NULL) {
+ memset(defaultCreds.value, 0, defaultCreds.length);
+ gss_release_buffer(&tmpMinor, &defaultCreds);
+ }
return major;
}
return major;
}