krb5 commit: Fix gssalloc mismatches
ghudson at mit.edu
ghudson at mit.edu
Mon Nov 9 11:59:16 EST 2026
https://github.com/krb5/krb5/commit/e62bf3208f0ca622f63ecf01b186ebeafbe6eee5
commit e62bf3208f0ca622f63ecf01b186ebeafbe6eee5
Author: Greg Hudson <ghudson at mit.edu>
Date: Mon Sep 21 22:41:51 2026 -0400
Fix gssalloc mismatches
Correct several mismatches where free() could be used on pointers
allocated with gssalloc_malloc() or vice versa. These mismatches are
generally harmless, but could cause heap corruption with older
versions of Visual Studio. Discovered by Aisle Research.
ticket: 9243 (new)
tags: pullup
target_version: 1.22-next
src/lib/gssapi/mechglue/g_dsp_name_ext.c | 2 +-
src/lib/gssapi/mechglue/g_dup_name.c | 6 +++---
src/lib/gssapi/mechglue/g_imp_name.c | 3 +--
3 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/src/lib/gssapi/mechglue/g_dsp_name_ext.c b/src/lib/gssapi/mechglue/g_dsp_name_ext.c
index be08dd16c..edb290b1f 100644
--- a/src/lib/gssapi/mechglue/g_dsp_name_ext.c
+++ b/src/lib/gssapi/mechglue/g_dsp_name_ext.c
@@ -120,7 +120,7 @@ gss_display_name_ext (OM_uint32 *minor_status,
return GSS_S_UNAVAILABLE;
if ((output_name_buffer->value =
- malloc(union_name->external_name->length + 1)) == NULL) {
+ gssalloc_malloc(union_name->external_name->length + 1)) == NULL) {
return GSS_S_FAILURE;
}
output_name_buffer->length = union_name->external_name->length;
diff --git a/src/lib/gssapi/mechglue/g_dup_name.c b/src/lib/gssapi/mechglue/g_dup_name.c
index bf6eb602e..8134457a4 100644
--- a/src/lib/gssapi/mechglue/g_dup_name.c
+++ b/src/lib/gssapi/mechglue/g_dup_name.c
@@ -55,7 +55,7 @@ gss_duplicate_name(OM_uint32 *minor_status, const gss_name_t src_name,
gss_name_t *dest_name)
{
gss_union_name_t src_union, dest_union;
- OM_uint32 major_status = GSS_S_FAILURE;
+ OM_uint32 major_status = GSS_S_FAILURE, tmp;
major_status = val_dup_name_args(minor_status, src_name, dest_name);
if (major_status != GSS_S_COMPLETE)
@@ -120,8 +120,8 @@ gss_duplicate_name(OM_uint32 *minor_status, const gss_name_t src_name,
allocation_failure:
if (dest_union) {
if (dest_union->external_name) {
- if (dest_union->external_name->value)
- free(dest_union->external_name->value);
+ (void) gss_release_buffer(&tmp,
+ dest_union->external_name);
free(dest_union->external_name);
}
if (dest_union->name_type)
diff --git a/src/lib/gssapi/mechglue/g_imp_name.c b/src/lib/gssapi/mechglue/g_imp_name.c
index 65fa6c0fb..be41add2b 100644
--- a/src/lib/gssapi/mechglue/g_imp_name.c
+++ b/src/lib/gssapi/mechglue/g_imp_name.c
@@ -158,8 +158,7 @@ gss_import_name(OM_uint32 * minor_status, gss_buffer_t input_name_buffer,
allocation_failure:
if (union_name) {
if (union_name->external_name) {
- if (union_name->external_name->value)
- free(union_name->external_name->value);
+ (void) gss_release_buffer(&tmp, union_name->external_name);
free(union_name->external_name);
}
if (union_name->name_type)
More information about the cvs-krb5
mailing list