diff options
| author | Greg Hudson <ghudson@mit.edu> | 2013-02-09 00:43:35 -0500 |
|---|---|---|
| committer | Greg Hudson <ghudson@mit.edu> | 2013-02-09 00:43:35 -0500 |
| commit | 7905cd6a2eddbf264242bb2a85f811878b2da7ab (patch) | |
| tree | 72b4028cbe0e399e1d293e2b718530913f0a2673 /src/plugins/kdb/db2 | |
| parent | 92e2bac0f38f7f60a8fc74b5964357212c4289e1 (diff) | |
| download | krb5-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.c | 9 | ||||
| -rw-r--r-- | src/plugins/kdb/db2/kdb_xdr.c | 21 |
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]; } } |
