krb5 commit [krb5-1.17]: Fix gssalloc_realloc() on Windows
Greg Hudson <[email protected]>
| Newsgroups | gmane.comp.encryption.kerberos.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://github.com/krb5/krb5/commit/c1f08b6ff1b3988da72e64093e9818f15c83619f commit c1f08b6ff1b3988da72e64093e9818f15c83619f Author: Greg Hudson <[email protected]> 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); }