diff options
author | Greg Hudson <ghudson@mit.edu> | 2013-03-28 16:43:30 -0400 |
---|---|---|
committer | Greg Hudson <ghudson@mit.edu> | 2013-03-29 01:59:33 -0400 |
commit | 61ab05d3b647971f2fc9481e7498176626a13707 (patch) | |
tree | abad3ac95f03d1d571d397206cf849a8c1c00bc0 /src | |
parent | fd557fc3de99f63b37ae78a0f43968c162524baa (diff) | |
download | krb5-61ab05d3b647971f2fc9481e7498176626a13707.tar.gz krb5-61ab05d3b647971f2fc9481e7498176626a13707.tar.xz krb5-61ab05d3b647971f2fc9481e7498176626a13707.zip |
Using k5-int.h data helpers for some functions
Use empty_data(), alloc_data(), and make_data() in some appropriate
places. This has the side effect of initializing the krb5_data magic
field, which can placate debugging tools.
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/gssapi/krb5/k5sealv3.c | 17 | ||||
-rw-r--r-- | src/lib/krb5/krb/pr_to_salt.c | 9 | ||||
-rw-r--r-- | src/lib/krb5/os/read_msg.c | 9 |
3 files changed, 14 insertions, 21 deletions
diff --git a/src/lib/gssapi/krb5/k5sealv3.c b/src/lib/gssapi/krb5/k5sealv3.c index c291e0fb0c..e4c2c2f8f0 100644 --- a/src/lib/gssapi/krb5/k5sealv3.c +++ b/src/lib/gssapi/krb5/k5sealv3.c @@ -126,10 +126,9 @@ gss_krb5int_make_seal_token_v3 (krb5_context context, #else ec = 0; #endif - plain.length = message->length + 16 + ec; - plain.data = malloc(message->length + 16 + ec); - if (plain.data == NULL) - return ENOMEM; + err = alloc_data(&plain, message->length + 16 + ec); + if (err) + return err; /* Get size of ciphertext. */ bufsize = 16 + krb5_encrypt_size (plain.length, key->keyblock.enctype); @@ -190,10 +189,9 @@ gss_krb5int_make_seal_token_v3 (krb5_context context, tok_id = KG2_TOK_WRAP_MSG; wrap_with_checksum: - plain.length = message->length + 16; - plain.data = malloc(message->length + 16); - if (plain.data == NULL) - return ENOMEM; + err = alloc_data(&plain, message->length + 16); + if (err) + return err; err = krb5_c_checksum_length(context, cksumtype, &cksumsize); if (err) @@ -442,8 +440,7 @@ gss_krb5int_unseal_token_v3(krb5_context *contextptr, Rotate the first two. */ store_16_be(0, ptr+4); store_16_be(0, ptr+6); - plain.length = bodysize-ec; - plain.data = (char *)ptr; + plain = make_data(ptr, bodysize - ec); if (!gss_krb5int_rotate_left(ptr, bodysize-ec, 16)) goto no_mem; sum.length = ec; diff --git a/src/lib/krb5/krb/pr_to_salt.c b/src/lib/krb5/krb/pr_to_salt.c index 416c1efed0..53fc0ae240 100644 --- a/src/lib/krb5/krb/pr_to_salt.c +++ b/src/lib/krb5/krb/pr_to_salt.c @@ -42,11 +42,9 @@ principal2salt_internal(krb5_context context, krb5_int32 nelem; register int i; - if (pr == 0) { - ret->length = 0; - ret->data = 0; + *ret = empty_data(); + if (pr == NULL) return 0; - } nelem = krb5_princ_size(context, pr); @@ -56,8 +54,7 @@ principal2salt_internal(krb5_context context, for (i = 0; i < (int) nelem; i++) size += krb5_princ_component(context, pr, i)->length; - ret->length = size; - if (!(ret->data = malloc (size))) + if (alloc_data(ret, size)) return ENOMEM; if (use_realm) { diff --git a/src/lib/krb5/os/read_msg.c b/src/lib/krb5/os/read_msg.c index 2da310d09a..6c80d53bce 100644 --- a/src/lib/krb5/os/read_msg.c +++ b/src/lib/krb5/os/read_msg.c @@ -35,8 +35,7 @@ krb5_read_message(krb5_context context, krb5_pointer fdp, krb5_data *inbuf) char *buf = NULL; int fd = *( (int *) fdp); - inbuf->data = NULL; - inbuf->length = 0; + *inbuf = empty_data(); if ((len2 = krb5_net_read(context, fd, (char *)&len, 4)) != 4) return((len2 < 0) ? errno : ECONNABORTED); @@ -45,12 +44,12 @@ krb5_read_message(krb5_context context, krb5_pointer fdp, krb5_data *inbuf) if ((len & VALID_UINT_BITS) != (krb5_ui_4) len) /* Overflow size_t??? */ return ENOMEM; - inbuf->length = ilen = (int) len; + ilen = (int)len; if (ilen) { /* * We may want to include a sanity check here someday.... */ - if (!(buf = malloc(inbuf->length))) { + if (!(buf = malloc(ilen))) { return(ENOMEM); } if ((len2 = krb5_net_read(context, fd, buf, ilen)) != ilen) { @@ -58,6 +57,6 @@ krb5_read_message(krb5_context context, krb5_pointer fdp, krb5_data *inbuf) return((len2 < 0) ? errno : ECONNABORTED); } } - inbuf->data = buf; + *inbuf = make_data(buf, ilen); return(0); } |