Modernize default_state.c
authorGreg Hudson <ghudson@mit.edu>
Tue, 25 Mar 2014 14:52:38 +0000 (10:52 -0400)
committerGreg Hudson <ghudson@mit.edu>
Tue, 25 Mar 2014 22:08:21 +0000 (18:08 -0400)
Use alloc_data() and empty_data() where appropriate.  Keep mainline
logic to the left where possible.  Name the output parameter of
krb5int_des_init_state with an _out suffix.  Use a professional tone
in comments.  Partly based on a patch from Alok Menghrajani.

src/lib/crypto/krb/crypto_int.h
src/lib/crypto/krb/default_state.c

index c2c6344bc8f3cf812809bc6b0ea3582925def422..c0541447a4aaf34e0e7643a187f038f56b3e97d6 100644 (file)
@@ -364,7 +364,7 @@ int krb5int_crypto_init(void);
 /* DES default state initialization handler (used by module enc providers). */
 krb5_error_code krb5int_des_init_state(const krb5_keyblock *key,
                                        krb5_keyusage keyusage,
-                                       krb5_data *new_state);
+                                       krb5_data *state_out);
 
 /* Default state cleanup handler (used by module enc providers). */
 void krb5int_default_free_state(krb5_data *state);
index 12124487188bfe70532ca78423fa3edd4381d797..c7bfe323f799efe428ed9058725419462f812ec0 100644 (file)
@@ -1,6 +1,6 @@
 /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
 /*
- * Copyright (C) 2001 by the Massachusetts Institute of Technology.
+ * Copyright (C) 2001, 2014 by the Massachusetts Institute of Technology.
  * All rights reserved.
  *
  * Export of this software from the United States of America may
 
 krb5_error_code
 krb5int_des_init_state(const krb5_keyblock *key, krb5_keyusage usage,
-                       krb5_data *new_state)
+                       krb5_data *state_out)
 {
-    new_state->length = 8;
-    new_state->data = (void *) malloc(8);
-    if (new_state->data) {
-        memset (new_state->data, 0, new_state->length);
-        /* We need to copy in the key for des-cbc-cr--ick, but that's how it works*/
-        if (key->enctype == ENCTYPE_DES_CBC_CRC) {
-            memcpy (new_state->data, key->contents, new_state->length);
-        }
-    } else {
+    if (alloc_data(state_out, 8))
         return ENOMEM;
-    }
+
+    /* des-cbc-crc uses the key as the initial ivec. */
+    if (key->enctype == ENCTYPE_DES_CBC_CRC)
+        memcpy(state_out->data, key->contents, state_out->length);
+
     return 0;
 }
 
 void
 krb5int_default_free_state(krb5_data *state)
 {
-    if (state->data) {
-        free (state->data);
-        state-> data = NULL;
-        state->length = 0;
-    }
+    free(state->data);
+    *state = empty_data();
 }