gss: add _gss_secure_release_buffer_set()
authorLuke Howard <lukeh@padl.com>
Wed, 15 Apr 2020 06:11:42 +0000 (16:11 +1000)
committerLuke Howard <lukeh@padl.com>
Wed, 15 Apr 2020 06:23:13 +0000 (16:23 +1000)
Add _gss_secure_release_buffer_set() helper function for zeroing buffer set
contents before release.

lib/gssapi/mech/gss_utils.c
lib/gssapi/mech/utils.h

index ffa7d98986a60928c844190eefa8c0bf2069486f..e622d8ff81bc7bedfe058a2203486fff14fc8eb4 100644 (file)
@@ -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)
 {
index 16f48c56a24a3300240589f1857b3d90ffeecbce..17fca284a420cf4f0d26816107d549005d7ddd00 100644 (file)
@@ -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);