Skip to content

Commit

Permalink
Modernize default_state.c
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
greghudson committed Mar 25, 2014
1 parent 6b9e570 commit 7d87754
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 18 deletions.
2 changes: 1 addition & 1 deletion src/lib/crypto/krb/crypto_int.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
27 changes: 10 additions & 17 deletions src/lib/crypto/krb/default_state.c
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -34,28 +34,21 @@

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();
}

0 comments on commit 7d87754

Please sign in to comment.