fix salt length for afs case
authorKen Raeburn <raeburn@mit.edu>
Thu, 21 Jun 2001 03:18:25 +0000 (03:18 +0000)
committerKen Raeburn <raeburn@mit.edu>
Thu, 21 Jun 2001 03:18:25 +0000 (03:18 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@13426 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/crypto/des/ChangeLog
src/lib/crypto/des/string2key.c

index 243993a4781de757754e4a1febeb1edca48fd139..65742691ff710334dbd8eaec4ce8053f8c52d3c6 100644 (file)
@@ -1,3 +1,9 @@
+2001-06-20  Ken Raeburn  <raeburn@mit.edu>
+
+       * string2key.c (mit_des_string_to_key_int): Construct a krb5_data
+       object with proper length for the AFS case (indicated by a -1 salt
+       length on input).
+
 2001-06-12  Ezra Peisach  <epeisach@mit.edu>
 
        * destest.c: main returns int instead of void.  Add "const" to
index 45a8500ec83c479edcde0e7e286dfb2e909d7d16..65f40141062bf923e876424172216981498e29b2 100644 (file)
@@ -71,9 +71,9 @@
 
 krb5_error_code
 mit_des_string_to_key_int (keyblock, data, salt)
-krb5_keyblock FAR * keyblock;
-const krb5_data FAR * data;
-const krb5_data FAR * salt;
+    krb5_keyblock FAR * keyblock;
+    const krb5_data FAR * data;
+    const krb5_data FAR * salt;
 {
     register krb5_octet *str, *copystr;
     register krb5_octet *key;
@@ -97,13 +97,15 @@ const krb5_data FAR * salt;
     key = keyblock->contents;
 
     if (salt) {
-      if (salt->length == SALT_TYPE_AFS_LENGTH || salt->length == (unsigned) -1) {
-       /* cheat and do AFS string2key instead */
-       return mit_afs_string_to_key (keyblock, data, salt);
-      } else 
-       length = data->length + salt->length;
-      }
-    else
+       if (salt->length == SALT_TYPE_AFS_LENGTH || salt->length == (unsigned) -1) {
+           krb5_data salt2;
+           salt2.data = salt->data;
+           salt2.length = strlen (salt2.data);
+           /* cheat and do AFS string2key instead */
+           return mit_afs_string_to_key (keyblock, data, &salt2);
+       } else 
+           length = data->length + salt->length;
+    } else
        length = data->length;
 
     copystr = malloc((size_t) length);