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) {
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;
}