aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2020-01-10 23:47:34 -0500
committerGreg Hudson <ghudson@mit.edu>2020-01-24 21:48:02 -0500
commitce27f162853ea07496df8c7b9264116256325565 (patch)
treeb0edf0ca83e4fcb5e0bb2f871be7c96cc0278685
parent28c230c324917ab7d437650c08f41b294db170f7 (diff)
downloadkrb5-ce27f162853ea07496df8c7b9264116256325565.zip
krb5-ce27f162853ea07496df8c7b9264116256325565.tar.gz
krb5-ce27f162853ea07496df8c7b9264116256325565.tar.bz2
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. (cherry picked from commit c120ed5b211ee684b830a6722fc3ab3222afbfa1) ticket: 8864 version_fixed: 1.18
-rw-r--r--src/lib/gssapi/mechglue/g_initialize.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/lib/gssapi/mechglue/g_initialize.c b/src/lib/gssapi/mechglue/g_initialize.c
index 2f9ce7a..6d49700 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();