git: 17b54ce76328 - main - security/cyrus-sasl2-gssapi: remove patch-plugins_gssapi.c
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 28 Nov 2021 04:14:55 UTC
The branch main has been updated by ume: URL: https://cgit.FreeBSD.org/ports/commit/?id=17b54ce763286be358fae69961f5fb1a670c614c commit 17b54ce763286be358fae69961f5fb1a670c614c Author: Hajimu UMEMOTO <ume@FreeBSD.org> AuthorDate: 2021-11-28 04:08:48 +0000 Commit: Hajimu UMEMOTO <ume@FreeBSD.org> CommitDate: 2021-11-28 04:08:48 +0000 security/cyrus-sasl2-gssapi: remove patch-plugins_gssapi.c PR: 260017 Reported by: Michael Osipov Discussed with: hrs MFH: 2021Q4 --- security/cyrus-sasl2-gssapi/Makefile | 2 +- security/cyrus-sasl2/files/patch-plugins_gssapi.c | 117 ---------------------- 2 files changed, 1 insertion(+), 118 deletions(-) diff --git a/security/cyrus-sasl2-gssapi/Makefile b/security/cyrus-sasl2-gssapi/Makefile index af03d777244d..e8432d9db8da 100644 --- a/security/cyrus-sasl2-gssapi/Makefile +++ b/security/cyrus-sasl2-gssapi/Makefile @@ -1,5 +1,5 @@ PKGNAMESUFFIX= -gssapi -PORTREVISION= 1 +PORTREVISION= 2 COMMENT= SASL GSSAPI authentication plugin diff --git a/security/cyrus-sasl2/files/patch-plugins_gssapi.c b/security/cyrus-sasl2/files/patch-plugins_gssapi.c deleted file mode 100644 index 39d43ab36790..000000000000 --- a/security/cyrus-sasl2/files/patch-plugins_gssapi.c +++ /dev/null @@ -1,117 +0,0 @@ -# -# Fixes of "keytab" keyword on the client side. -# -# https://github.com/cyrusimap/cyrus-sasl/commit/74faca7400f414784b5e2e136668e6f4ef0d6b96 -# https://github.com/cyrusimap/cyrus-sasl/commit/7a95382c68e7187fe7407b2a94036d9ca3246e34 -# https://github.com/cyrusimap/cyrus-sasl/commit/238380260fe623212c0f21d63e763b7a849540d1 -# ---- plugins/gssapi.c.orig 2018-11-08 17:29:57 UTC -+++ plugins/gssapi.c -@@ -1668,8 +1668,10 @@ static int gssapi_client_mech_step(void *conn_context, - if (clientoutlen) - *clientoutlen = 0; - -+#if 0 - params->utils->log(params->utils->conn, SASL_LOG_DEBUG, - "GSSAPI client step %d", text->state); -+#endif - - switch (text->state) { - -@@ -1777,6 +1779,39 @@ static int gssapi_client_mech_step(void *conn_context, - req_flags = req_flags | GSS_C_DELEG_FLAG; - } - -+ /* -+ * If caller didn't provide creds already. -+ * -+ * In the case of Kerberos, a client typically wants to use -+ * a credential in either a keytab file or the credentials cache -+ * of the current process context. This code path will try to -+ * find a credential in the specified keytab file, then the -+ * credentials cache. The keytab file can be specified by -+ * "keytab" option, and it is configured by using -+ * gsskrb5_register_acceptor_identity() API when available. -+ */ -+ if (client_creds == GSS_C_NO_CREDENTIAL) { -+ GSS_LOCK_MUTEX_CTX(params->utils, text); -+ maj_stat = gss_acquire_cred(&min_stat, -+ text->server_name, -+ GSS_C_INDEFINITE, -+ GSS_C_NO_OID_SET, -+ GSS_C_INITIATE, -+ &text->client_creds, -+ NULL, -+ NULL); -+ GSS_UNLOCK_MUTEX_CTX(params->utils, text); -+ -+ /* -+ * Ignore the error intentionally. The credential was -+ * not found in the specified keytab file. -+ */ -+ if (GSS_ERROR(maj_stat) == 0) { -+ client_creds = text->client_creds; -+ } -+ } -+ -+ /* Try the credentials cache. */ - GSS_LOCK_MUTEX_CTX(params->utils, text); - maj_stat = gss_init_sec_context(&min_stat, - client_creds, /* GSS_C_NO_CREDENTIAL */ -@@ -2227,16 +2262,55 @@ static sasl_client_plug_t gssapi_client_plugins[] = - #endif - }; - --int gssapiv2_client_plug_init(const sasl_utils_t *utils __attribute__((unused)), -+int gssapiv2_client_plug_init( -+#ifndef HAVE_GSSKRB5_REGISTER_ACCEPTOR_IDENTITY -+ const sasl_utils_t *utils __attribute__((unused)), -+#else -+ const sasl_utils_t *utils, -+#endif - int maxversion, - int *out_version, - sasl_client_plug_t **pluglist, - int *plugcount) - { -+#ifdef HAVE_GSSKRB5_REGISTER_ACCEPTOR_IDENTITY -+ const char *keytab = NULL; -+ char keytab_path[1024]; -+ unsigned int rl; -+#endif -+ - if (maxversion < SASL_CLIENT_PLUG_VERSION) { - SETERROR(utils, "Version mismatch in GSSAPI"); - return SASL_BADVERS; - } -+ -+#ifdef HAVE_GSSKRB5_REGISTER_ACCEPTOR_IDENTITY -+ /* unfortunately, we don't check for readability of keytab if it's -+ the standard one, since we don't know where it is */ -+ -+ /* FIXME: This code is broken */ -+ -+ utils->getopt(utils->getopt_context, "GSSAPI", "keytab", &keytab, &rl); -+ if (keytab != NULL) { -+ if (access(keytab, R_OK) != 0) { -+ utils->log(NULL, SASL_LOG_ERR, -+ "Could not find keytab file: %s: %m", keytab); -+ return SASL_FAIL; -+ } -+ -+ if(strlen(keytab) > sizeof(keytab_path)) { -+ utils->log(NULL, SASL_LOG_ERR, -+ "path to keytab is > %zu characters", -+ sizeof(keytab_path)); -+ return SASL_BUFOVER; -+ } -+ -+ strncpy(keytab_path, keytab, sizeof(keytab_path)); -+ keytab_path[sizeof(keytab_path) - 1] = '\0'; -+ -+ gsskrb5_register_acceptor_identity(keytab_path); -+ } -+#endif - - *out_version = SASL_CLIENT_PLUG_VERSION; - *pluglist = gssapi_client_plugins;