Hello,
I believe there is a 44 byte leak in gssapi server.c after the authentication gets successful. See following patch for details;
diff -ru ../libgsasl-1.8.0/gssapi/server.c libgsasl-1.8.0/gssapi/server.c
--- ../libgsasl-1.8.0/gssapi/server.c 2012-05-16 01:35:28.000000000 +0300
+++ libgsasl-1.8.0/gssapi/server.c 2016-06-24 13:58:45.401620729 +0300
@@ -251,6 +251,10 @@
gsasl_property_set_raw (sctx, GSASL_GSSAPI_DISPLAY_NAME,
client_name.value, client_name.length);
+ maj_stat = gss_release_buffer (&min_stat, &client_name);
+ if (GSS_ERROR (maj_stat))
+ return GSASL_GSSAPI_RELEASE_BUFFER_ERROR;
+
maj_stat = gss_release_buffer (&min_stat, &bufdesc2);
if (GSS_ERROR (maj_stat))
return GSASL_GSSAPI_RELEASE_BUFFER_ERROR;
and the valgrind output before the patch applied.
==26465== 44 bytes in 1 blocks are definitely lost in loss record 17 of 30
==26465== at 0x4C2BBA0: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==26465== by 0x4ECB88D: gssalloc_malloc (gssapi_alloc.h:99)
==26465== by 0x4ECB8BB: gssalloc_strdup (gssapi_alloc.h:120)
==26465== by 0x4ECB932: gssint_g_make_string_buffer (util_buffer.c:42)
==26465== by 0x4F0471F: krb5_gss_display_name (disp_name.c:66)
==26465== by 0x4ECE151: gssint_display_internal_name (g_glue.c:542)
==26465== by 0x4ECD37B: gss_display_name (g_dsp_name.c:98)
==26465== by 0x4EC3AFF: _gsasl_gssapi_server_step (in /home/I326170/workspace/hanalite-auth/build/Debug/libv2auth.so)
==26465== by 0x4EBC4BA: gsasl_step64 (in /home/I326170/workspace/hanalite-auth/build/Debug/libv2auth.so)