krb5 commit [krb5-1.17]: Fix gssalloc_realloc() on Windows
Greg Hudson
ghudson at mit.edu
Mon Dec 9 18:22:05 EST 2019
https://github.com/krb5/krb5/commit/c1f08b6ff1b3988da72e64093e9818f15c83619f
commit c1f08b6ff1b3988da72e64093e9818f15c83619f
Author: Greg Hudson <ghudson at mit.edu>
Date: Mon Oct 21 10:29:35 2019 -0400
Fix gssalloc_realloc() on Windows
gss_inquire_sec_context_by_oid(GSS_C_INQ_SSPI_SESSION_KEY) fails on
Windows because generic_gss_add_buffer_set_member() relies on the
ability to realloc() a null pointer. Unlike realloc(), HeapReAlloc()
requires an input pointer that (from the MSDN documentation) "is
returned by an earlier call to the HeapAlloc or HeapReAlloc function".
So gssalloc_realloc() must test for null inputs and call HeapAlloc()
instead.
Reported by Eric Pauly.
(cherry picked from commit d66b311093f1782c3610bbc77bd78fce411e8f79)
ticket: 8735
version_fixed: 1.17.1
src/lib/gssapi/generic/gssapi_alloc.h | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/src/lib/gssapi/generic/gssapi_alloc.h b/src/lib/gssapi/generic/gssapi_alloc.h
index 9a5cd98..fff88fd 100644
--- a/src/lib/gssapi/generic/gssapi_alloc.h
+++ b/src/lib/gssapi/generic/gssapi_alloc.h
@@ -36,6 +36,9 @@ gssalloc_calloc(size_t count, size_t size)
static inline void *
gssalloc_realloc(void *value, size_t size)
{
+ /* Unlike realloc(), HeapReAlloc() does not work on null values. */
+ if (value == NULL)
+ return HeapAlloc(GetProcessHeap(), 0, size);
return HeapReAlloc(GetProcessHeap(), 0, value, size);
}
More information about the cvs-krb5
mailing list