]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Fix gssalloc_realloc() on Windows 990/head
authorGreg Hudson <ghudson@mit.edu>
Mon, 21 Oct 2019 14:29:35 +0000 (10:29 -0400)
committerGreg Hudson <ghudson@mit.edu>
Tue, 22 Oct 2019 00:47:51 +0000 (20:47 -0400)
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.

ticket: 8735
tags: pullup
target_version: 1.17-next

src/lib/gssapi/generic/gssapi_alloc.h

index 9a5cd9892c2c60eee640146ddb3742640f512c52..fff88fd44a9a9471060d6e6291d3cec640c7394a 100644 (file)
@@ -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);
 }