krb5 commit: Avoid asymmetric WSACleanup() in libkrb5

ghudson at mit.edu ghudson at mit.edu
Wed May 27 18:53:00 EDT 2026


https://github.com/krb5/krb5/commit/acf38f87c07f873c13ec2f51442519e16f1c3512
commit acf38f87c07f873c13ec2f51442519e16f1c3512
Author: Greg Hudson <ghudson at mit.edu>
Date:   Mon May 18 12:27:52 2026 -0400

    Avoid asymmetric WSACleanup() in libkrb5
    
    In k5_os_init_context(), call WSAStartup() before doing anything else.
    Otherwise, a failure to read or parse krb5.conf could cause an
    asymmetric call to WSACleanup() in k5_os_free_context().  Reported by
    Zvika Meiseles.
    
    ticket: 9210 (new)
    tags: pullup
    target_version: 1.22-next

 src/lib/krb5/os/init_os_ctx.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/src/lib/krb5/os/init_os_ctx.c b/src/lib/krb5/os/init_os_ctx.c
index c35007888..2d9951186 100644
--- a/src/lib/krb5/os/init_os_ctx.c
+++ b/src/lib/krb5/os/init_os_ctx.c
@@ -416,8 +416,11 @@ k5_os_init_context(krb5_context ctx, profile_t profile, krb5_flags flags)
     krb5_os_context os_ctx;
     krb5_error_code    retval = 0;
 #ifdef _WIN32
-    WORD wVersionRequested;
     WSADATA wsaData;
+
+    /* Initialize winsock to version 1.1.  Do this first so that we know it was
+     * done in k5_os_free_context(), and can safely call WSACleanup(). */
+    WSAStartup(0x0101, &wsaData);
 #endif /* _WIN32 */
 
     os_ctx = &ctx->os_context;
@@ -438,14 +441,6 @@ k5_os_init_context(krb5_context ctx, profile_t profile, krb5_flags flags)
     if (retval)
         return retval;
 
-#ifdef _WIN32
-    /* We initialize winsock to version 1.1 but
-     * we do not care if we succeed or fail.
-     */
-    wVersionRequested = 0x0101;
-    WSAStartup (wVersionRequested, &wsaData);
-#endif /* _WIN32 */
-
     return 0;
 }
 


More information about the cvs-krb5 mailing list