projects
/
moonshot.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
751eaff
)
make sure imported sec context keys correctly allocated
author
Luke Howard
<lukeh@padl.com>
Sat, 17 Sep 2011 07:32:28 +0000
(17:32 +1000)
committer
Luke Howard
<lukeh@padl.com>
Sat, 17 Sep 2011 07:46:26 +0000
(17:46 +1000)
moonshot/mech_eap/import_sec_context.c
patch
|
blob
|
history
diff --git
a/moonshot/mech_eap/import_sec_context.c
b/moonshot/mech_eap/import_sec_context.c
index
56ee8d8
..
1533a16
100644
(file)
--- a/
moonshot/mech_eap/import_sec_context.c
+++ b/
moonshot/mech_eap/import_sec_context.c
@@
-152,13
+152,19
@@
importKerberosKey(OM_uint32 *minor,
size_t *pRemain,
krb5_cksumtype *checksumType,
krb5_enctype *pEncryptionType,
size_t *pRemain,
krb5_cksumtype *checksumType,
krb5_enctype *pEncryptionType,
- krb5_keyblock *
k
ey)
+ krb5_keyblock *
pK
ey)
{
unsigned char *p = *pBuf;
size_t remain = *pRemain;
OM_uint32 encryptionType;
OM_uint32 length;
{
unsigned char *p = *pBuf;
size_t remain = *pRemain;
OM_uint32 encryptionType;
OM_uint32 length;
- gss_buffer_desc tmp;
+ krb5_context krbContext;
+ krb5_keyblock key;
+ krb5_error_code code;
+
+ GSSEAP_KRB_INIT(&krbContext);
+
+ KRB_KEY_INIT(pKey);
if (remain < 12) {
*minor = GSSEAP_TOK_TRUNC;
if (remain < 12) {
*minor = GSSEAP_TOK_TRUNC;
@@
-179,14
+185,19
@@
importKerberosKey(OM_uint32 *minor,
return GSS_S_DEFECTIVE_TOKEN;
}
return GSS_S_DEFECTIVE_TOKEN;
}
- if (load_buffer(&p[12], length, &tmp) == NULL) {
- *minor = ENOMEM;
- return GSS_S_FAILURE;
- }
+ if (encryptionType != ENCTYPE_NULL) {
+ KRB_KEY_INIT(&key);
- KRB_KEY_TYPE(key) = encryptionType;
- KRB_KEY_LENGTH(key) = tmp.length;
- KRB_KEY_DATA(key) = (unsigned char *)tmp.value;
+ KRB_KEY_TYPE(&key) = encryptionType;
+ KRB_KEY_LENGTH(&key) = length;
+ KRB_KEY_DATA(&key) = &p[12];
+
+ code = krb5_copy_keyblock_contents(krbContext, &key, pKey);
+ if (code != 0) {
+ *minor = code;
+ return GSS_S_FAILURE;
+ }
+ }
*pBuf += 12 + length;
*pRemain -= 12 + length;
*pBuf += 12 + length;
*pRemain -= 12 + length;