From 4e359bd5cea73eaeff3ec3f2ca1e3b1d1efe47e4 Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Fri, 6 Aug 2021 19:21:12 +1000 Subject: [PATCH] krb5: add krb5_store_datalen() Store a data blob to the storage. The data is stored with an int32 as length plus the data (not padded). This function only differs from krb5_store_data() insofar as it takes a void * and a length as parameters. Patch from Roland C. Dowdeswell --- lib/krb5/libkrb5-exports.def.in | 1 + lib/krb5/store.c | 22 ++++++++++++++++++++++ lib/krb5/version-script.map | 1 + 3 files changed, 24 insertions(+) diff --git a/lib/krb5/libkrb5-exports.def.in b/lib/krb5/libkrb5-exports.def.in index 4bfcaf0a5..d7ceb8564 100644 --- a/lib/krb5/libkrb5-exports.def.in +++ b/lib/krb5/libkrb5-exports.def.in @@ -660,6 +660,7 @@ EXPORTS krb5_store_creds krb5_store_creds_tag krb5_store_data + krb5_store_datalen krb5_store_int16 krb5_store_int32 krb5_store_int64 diff --git a/lib/krb5/store.c b/lib/krb5/store.c index c7355f686..391a8e70f 100644 --- a/lib/krb5/store.c +++ b/lib/krb5/store.c @@ -785,6 +785,28 @@ krb5_store_data(krb5_storage *sp, return 0; } +/** + * Store a data blob to the storage. The data is stored with an int32 as + * length plus the data (not padded). This function only differs from + * krb5_store_data() insofar as it takes a void * and a length as parameters. + * + * @param sp the storage buffer to write to + * @param s the string to store. + * @param len length of the string to be stored. + * + * @return 0 on success, a Kerberos 5 error code on failure. + * + * @ingroup krb5_storage + */ +KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL +krb5_store_datalen(krb5_storage *sp, void *d, size_t len) +{ + krb5_data data; + data.length = len; + data.data = d; + return krb5_store_data(sp, data); +} + /** * Parse a data from the storage. * diff --git a/lib/krb5/version-script.map b/lib/krb5/version-script.map index 158e2ce61..87d9d1ac9 100644 --- a/lib/krb5/version-script.map +++ b/lib/krb5/version-script.map @@ -653,6 +653,7 @@ HEIMDAL_KRB5_2.0 { krb5_store_creds; krb5_store_creds_tag; krb5_store_data; + krb5_store_datalen; krb5_store_int16; krb5_store_int32; krb5_store_int64;