summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2010-05-13 17:34:33 +0000
committerGreg Hudson <ghudson@mit.edu>2010-05-13 17:34:33 +0000
commitaa53b05e76d809172e15c626750d1800a92246dc (patch)
tree698c6bd76e61e7c78f4182fb53f8e68f24bbb308
parent592c43b440bccf0530f7935f926a7f74e12ff7c8 (diff)
downloadkrb5-aa53b05e76d809172e15c626750d1800a92246dc.tar.gz
krb5-aa53b05e76d809172e15c626750d1800a92246dc.tar.xz
krb5-aa53b05e76d809172e15c626750d1800a92246dc.zip
Negative enctypes improperly read from keytabs
When reading enctypes from keytabs, we need to ntohs() the 16-bit value we read in before sign-extending it to a 32-bit value in the keyblock, or we run the risk of extending the wrong sign. ticket: 6720 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@24016 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r--src/lib/krb5/keytab/kt_file.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/lib/krb5/keytab/kt_file.c b/src/lib/krb5/keytab/kt_file.c
index 3583506a4d..80070bcf5d 100644
--- a/src/lib/krb5/keytab/kt_file.c
+++ b/src/lib/krb5/keytab/kt_file.c
@@ -1362,10 +1362,9 @@ krb5_ktfileint_internal_read_entry(krb5_context context, krb5_keytab id, krb5_ke
error = KRB5_KT_END;
goto fail;
}
- ret_entry->key.enctype = (krb5_enctype)enctype;
-
if (KTVERSION(id) != KRB5_KT_VNO_1)
- ret_entry->key.enctype = ntohs(ret_entry->key.enctype);
+ enctype = ntohs(enctype);
+ ret_entry->key.enctype = (krb5_enctype)enctype;
/* key contents */
ret_entry->key.magic = KV5M_KEYBLOCK;