From 872a97e20ce468cb4ed114a7a823d97625f8f07e Mon Sep 17 00:00:00 2001 From: Ezra Peisach Date: Tue, 28 Oct 1997 15:31:15 +0000 Subject: [PATCH] * kdb_cpw.c (add_key_pwd): For KRB5_KDB_SALTTYPE_AFS3, the salt key for afs_mit_string_to_key mut be null terminated. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@10254 dc483132-0cff-0310-8789-dd5450dbe970 --- src/lib/kdb/ChangeLog | 5 +++++ src/lib/kdb/kdb_cpw.c | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/lib/kdb/ChangeLog b/src/lib/kdb/ChangeLog index 773943219..4923b70bf 100644 --- a/src/lib/kdb/ChangeLog +++ b/src/lib/kdb/ChangeLog @@ -1,3 +1,8 @@ +Tue Oct 28 10:18:10 1997 Ezra Peisach + + * kdb_cpw.c (add_key_pwd): For KRB5_KDB_SALTTYPE_AFS3, the salt + key for afs_mit_string_to_key mut be null terminated. + Mon Oct 13 10:18:19 1997 Ezra Peisach * t_kdb.c (do_testing): Add krb5_free_context. diff --git a/src/lib/kdb/kdb_cpw.c b/src/lib/kdb/kdb_cpw.c index 87caafc23..ec7419e1c 100644 --- a/src/lib/kdb/kdb_cpw.c +++ b/src/lib/kdb/kdb_cpw.c @@ -392,6 +392,7 @@ add_key_pwd(context, master_eblock, ks_tuple, ks_tuple_count, passwd, key_salt.data.data = 0; break; case KRB5_KDB_SALTTYPE_AFS3: { +#if 0 krb5_data * saltdata; if (retval = krb5_copy_data(context, krb5_princ_realm(context, db_entry->princ), &saltdata)) @@ -400,6 +401,19 @@ add_key_pwd(context, master_eblock, ks_tuple, ks_tuple_count, passwd, key_salt.data = *saltdata; key_salt.data.length = -1; /*length actually used below...*/ krb5_xfree(saltdata); +#else + /* Why do we do this? Well, the afs_mit_string_to_key needs to + use strlen, and the realm is not NULL terminated.... */ + int slen = (*krb5_princ_realm(context,db_entry->princ)).length; + if(!(key_salt.data.data = (char *) malloc(slen+1))) + return ENOMEM; + key_salt.data.data[slen] = 0; + memcpy((char *)key_salt.data.data, + (char *)(*krb5_princ_realm(context,db_entry->princ)).data, + slen); + key_salt.data.length = -1; /*length actually used below...*/ +#endif + } break; default: -- 2.26.2