From c120ed5b211ee684b830a6722fc3ab3222afbfa1 Mon Sep 17 00:00:00 2001 From: Greg Hudson Date: Fri, 10 Jan 2020 23:47:34 -0500 Subject: [PATCH] Fix error handling in gssint_mechglue_init() In the unlikely event that one of the functions called by gssint_mechglue_init() returns an error, return that error to the caller rather than continuing on and discarding the error status. Returning success when some of the operations failed could fool the library finalizer into thinking that initialization completed. Reported by Spencer Malone. ticket: 8864 (new) tags: pullup target_version: 1.18 target_version: 1.17-next --- src/lib/gssapi/mechglue/g_initialize.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib/gssapi/mechglue/g_initialize.c b/src/lib/gssapi/mechglue/g_initialize.c index 2f9ce7a47a..6d49700a54 100644 --- a/src/lib/gssapi/mechglue/g_initialize.c +++ b/src/lib/gssapi/mechglue/g_initialize.c @@ -114,11 +114,19 @@ gssint_mechglue_init(void) add_error_table(&et_ggss_error_table); err = k5_mutex_finish_init(&g_mechSetLock); + if (err) + return err; err = k5_mutex_finish_init(&g_mechListLock); + if (err) + return err; #ifdef _GSS_STATIC_LINK err = gss_krb5int_lib_init(); + if (err) + return err; err = gss_spnegoint_lib_init(); + if (err) + return err; #endif err = gssint_mecherrmap_init(); -- 2.47.2