From 689eef20eccc74c9fbe4ecc267da88e530bcd317 Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Wed, 15 Apr 2020 16:11:42 +1000 Subject: [PATCH] gss: add _gss_secure_release_buffer_set() Add _gss_secure_release_buffer_set() helper function for zeroing buffer set contents before release. --- lib/gssapi/mech/gss_utils.c | 20 ++++++++++++++++++++ lib/gssapi/mech/utils.h | 2 ++ 2 files changed, 22 insertions(+) diff --git a/lib/gssapi/mech/gss_utils.c b/lib/gssapi/mech/gss_utils.c index ffa7d9898..e622d8ff8 100644 --- a/lib/gssapi/mech/gss_utils.c +++ b/lib/gssapi/mech/gss_utils.c @@ -157,6 +157,26 @@ _gss_secure_release_buffer(OM_uint32 *minor_status, return gss_release_buffer(minor_status, buffer); } +OM_uint32 +_gss_secure_release_buffer_set(OM_uint32 *minor_status, + gss_buffer_set_t *buffer_set) +{ + size_t i; + OM_uint32 minor; + + *minor_status = 0; + + if (*buffer_set == GSS_C_NO_BUFFER_SET) + return GSS_S_COMPLETE; + + for (i = 0; i < (*buffer_set)->count; i++) + _gss_secure_release_buffer(&minor, &((*buffer_set)->elements[i])); + + (*buffer_set)->count = 0; + + return gss_release_buffer_set(minor_status, buffer_set); +} + void _gss_mg_encode_le_uint32(uint32_t n, uint8_t *p) { diff --git a/lib/gssapi/mech/utils.h b/lib/gssapi/mech/utils.h index 16f48c56a..17fca284a 100644 --- a/lib/gssapi/mech/utils.h +++ b/lib/gssapi/mech/utils.h @@ -33,6 +33,8 @@ OM_uint32 _gss_copy_buffer(OM_uint32 *minor_status, const gss_buffer_t from_buf, gss_buffer_t to_buf); OM_uint32 _gss_secure_release_buffer(OM_uint32 *minor_status, gss_buffer_t buffer); +OM_uint32 _gss_secure_release_buffer_set(OM_uint32 *minor_status, + gss_buffer_set_t *buffer_set); void _gss_mg_encode_le_uint32(uint32_t n, uint8_t *p); void _gss_mg_decode_le_uint32(const void *ptr, uint32_t *n);