summaryrefslogtreecommitdiffstats
path: root/src/plugins/kdb/db2
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2013-02-09 00:43:35 -0500
committerGreg Hudson <ghudson@mit.edu>2013-02-09 00:43:35 -0500
commit7905cd6a2eddbf264242bb2a85f811878b2da7ab (patch)
tree72b4028cbe0e399e1d293e2b718530913f0a2673 /src/plugins/kdb/db2
parent92e2bac0f38f7f60a8fc74b5964357212c4289e1 (diff)
downloadkrb5-7905cd6a2eddbf264242bb2a85f811878b2da7ab.tar.gz
krb5-7905cd6a2eddbf264242bb2a85f811878b2da7ab.tar.xz
krb5-7905cd6a2eddbf264242bb2a85f811878b2da7ab.zip
Add and use k5memdup, k5memdup0 helpers
Add k5-int.h static functions to duplicate byte ranges, optionally with a trailing zero byte, and set an error code like k5alloc does. Use them where they would shorten existing code.
Diffstat (limited to 'src/plugins/kdb/db2')
-rw-r--r--src/plugins/kdb/db2/adb_policy.c9
-rw-r--r--src/plugins/kdb/db2/kdb_xdr.c21
2 files changed, 11 insertions, 19 deletions
diff --git a/src/plugins/kdb/db2/adb_policy.c b/src/plugins/kdb/db2/adb_policy.c
index fa6f0a38cb..5e046ab612 100644
--- a/src/plugins/kdb/db2/adb_policy.c
+++ b/src/plugins/kdb/db2/adb_policy.c
@@ -211,10 +211,9 @@ osa_adb_get_policy(osa_adb_policy_t db, char *name,
entry = k5alloc(sizeof(*entry), &ret);
if (entry == NULL)
goto error;
- aligned_data = k5alloc(dbdata.size, &ret);
+ aligned_data = k5memdup(dbdata.data, dbdata.size, &ret);
if (aligned_data == NULL)
goto error;
- memcpy(aligned_data, dbdata.data, dbdata.size);
xdrmem_create(&xdrs, aligned_data, dbdata.size, XDR_DECODE);
if (!xdr_osa_policy_ent_rec(&xdrs, entry)) {
ret = OSA_ADB_FAILURE;
@@ -343,11 +342,9 @@ osa_adb_iter_policy(osa_adb_policy_t db, osa_adb_iter_policy_func func,
goto error;
}
- if(!(aligned_data = (char *) malloc(dbdata.size))) {
- ret = ENOMEM;
+ aligned_data = k5memdup(dbdata.data, dbdata.size, &ret);
+ if (aligned_data == NULL)
goto error;
- }
- memcpy(aligned_data, dbdata.data, dbdata.size);
memset(entry, 0, sizeof(osa_policy_ent_rec));
xdrmem_create(&xdrs, aligned_data, dbdata.size, XDR_DECODE);
diff --git a/src/plugins/kdb/db2/kdb_xdr.c b/src/plugins/kdb/db2/kdb_xdr.c
index 184615cdae..5264963386 100644
--- a/src/plugins/kdb/db2/kdb_xdr.c
+++ b/src/plugins/kdb/db2/kdb_xdr.c
@@ -310,10 +310,9 @@ krb5_decode_princ_entry(krb5_context context, krb5_data *content,
/* Check for extra data */
if (entry->len > KRB5_KDB_V1_BASE_LENGTH) {
entry->e_length = entry->len - KRB5_KDB_V1_BASE_LENGTH;
- entry->e_data = k5alloc(entry->e_length, &retval);
+ entry->e_data = k5memdup(nextloc, entry->e_length, &retval);
if (entry->e_data == NULL)
goto error_out;
- memcpy(entry->e_data, nextloc, entry->e_length);
nextloc += entry->e_length;
}
@@ -363,12 +362,10 @@ krb5_decode_princ_entry(krb5_context context, krb5_data *content,
retval = KRB5_KDB_TRUNCATED_RECORD;
goto error_out;
}
- if (((*tl_data)->tl_data_contents = (krb5_octet *)
- malloc((*tl_data)->tl_data_length)) == NULL) {
- retval = ENOMEM;
+ (*tl_data)->tl_data_contents =
+ k5memdup(nextloc, (*tl_data)->tl_data_length, &retval);
+ if ((*tl_data)->tl_data_contents == NULL)
goto error_out;
- }
- memcpy((*tl_data)->tl_data_contents,nextloc,(*tl_data)->tl_data_length);
nextloc += (*tl_data)->tl_data_length;
tl_data = &((*tl_data)->tl_data_next);
}
@@ -411,13 +408,11 @@ krb5_decode_princ_entry(krb5_context context, krb5_data *content,
goto error_out;
}
if (key_data->key_data_length[j]) {
- if ((key_data->key_data_contents[j] = (krb5_octet *)
- malloc(key_data->key_data_length[j])) == NULL) {
- retval = ENOMEM;
+ key_data->key_data_contents[j] =
+ k5memdup(nextloc, key_data->key_data_length[j],
+ &retval);
+ if (key_data->key_data_contents[j] == NULL)
goto error_out;
- }
- memcpy(key_data->key_data_contents[j], nextloc,
- key_data->key_data_length[j]);
nextloc += key_data->key_data_length[j];
}
}