summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2013-03-28 16:43:30 -0400
committerGreg Hudson <ghudson@mit.edu>2013-03-29 01:59:33 -0400
commit61ab05d3b647971f2fc9481e7498176626a13707 (patch)
treeabad3ac95f03d1d571d397206cf849a8c1c00bc0
parentfd557fc3de99f63b37ae78a0f43968c162524baa (diff)
downloadkrb5-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.
-rw-r--r--src/lib/gssapi/krb5/k5sealv3.c17
-rw-r--r--src/lib/krb5/krb/pr_to_salt.c9
-rw-r--r--src/lib/krb5/os/read_msg.c9
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);
}