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 23:07:39 -0500
commit45ec4ac9a159b6be3042356ba4570e4c501b5726 (patch)
tree90779061fdd381285a625b44cce838067eda5743
parent90a13e6d9763c510339c7a40fbc4ecb30041f421 (diff)
downloadkrb5-45ec4ac9a159b6be3042356ba4570e4c501b5726.zip
krb5-45ec4ac9a159b6be3042356ba4570e4c501b5726.tar.gz
krb5-45ec4ac9a159b6be3042356ba4570e4c501b5726.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.17.2
-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 0ad11c0..1c24f0a 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();