From 71889693715071f25902031bb641afcb64eb541f Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Fri, 6 Aug 2021 19:32:10 +1000 Subject: [PATCH] krb5: add krb5_store_bytes() Similar to krb5_storage_write(), but returns an error rather than the number of bytes written. --- lib/krb5/libkrb5-exports.def.in | 1 + lib/krb5/store.c | 27 +++++++++++++++++++++++++-- lib/krb5/version-script.map | 1 + 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/lib/krb5/libkrb5-exports.def.in b/lib/krb5/libkrb5-exports.def.in index d7ceb8564..19f8ee421 100644 --- a/lib/krb5/libkrb5-exports.def.in +++ b/lib/krb5/libkrb5-exports.def.in @@ -657,6 +657,7 @@ EXPORTS krb5_store_address krb5_store_addrs krb5_store_authdata + krb5_store_bytes krb5_store_creds krb5_store_creds_tag krb5_store_data diff --git a/lib/krb5/store.c b/lib/krb5/store.c index 391a8e70f..7395ec048 100644 --- a/lib/krb5/store.c +++ b/lib/krb5/store.c @@ -799,14 +799,37 @@ krb5_store_data(krb5_storage *sp, * @ingroup krb5_storage */ KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL -krb5_store_datalen(krb5_storage *sp, void *d, size_t len) +krb5_store_datalen(krb5_storage *sp, const void *d, size_t len) { krb5_data data; data.length = len; - data.data = d; + data.data = (void *)d; return krb5_store_data(sp, data); } +/** + * Store a data blob to the storage. The data is stored without a length. + * + * @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_bytes(krb5_storage *sp, const void *d, size_t len) +{ + ssize_t ssize; + + ssize = krb5_storage_write(sp, d, len); + if (ssize != len) + return ENOMEM; + + return 0; +} + /** * Parse a data from the storage. * diff --git a/lib/krb5/version-script.map b/lib/krb5/version-script.map index 87d9d1ac9..d6a13282b 100644 --- a/lib/krb5/version-script.map +++ b/lib/krb5/version-script.map @@ -650,6 +650,7 @@ HEIMDAL_KRB5_2.0 { krb5_store_address; krb5_store_addrs; krb5_store_authdata; + krb5_store_bytes; krb5_store_creds; krb5_store_creds_tag; krb5_store_data;