summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordjm@openbsd.org <djm@openbsd.org>2023-10-12 02:15:53 +0000
committerDamien Miller <djm@mindrot.org>2023-10-12 13:19:41 +1100
commit7f3180be8a85320b5d3221714b40c16e66881249 (patch)
treeed7b765c41d2827448ef95826f7ee052749f53ed
parenta612b93de5d86e955bfb6e24278f621118eea500 (diff)
upstream: release GSS OIDs only at end of authentication; bz2982,
ok dtucker@ OpenBSD-Commit-ID: 0daa41e0525ae63cae4483519ecaa37ac485d94c
-rw-r--r--sshconnect2.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/sshconnect2.c b/sshconnect2.c
index 90cbba68..5831a00c 100644
--- a/sshconnect2.c
+++ b/sshconnect2.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshconnect2.c,v 1.367 2023/08/01 08:15:04 dtucker Exp $ */
+/* $OpenBSD: sshconnect2.c,v 1.368 2023/10/12 02:15:53 djm Exp $ */
/*
* Copyright (c) 2000 Markus Friedl. All rights reserved.
* Copyright (c) 2008 Damien Miller. All rights reserved.
@@ -476,6 +476,14 @@ ssh_userauth2(struct ssh *ssh, const char *local_user,
ssh_dispatch_set(ssh, SSH2_MSG_SERVICE_ACCEPT, &input_userauth_service_accept);
ssh_dispatch_run_fatal(ssh, DISPATCH_BLOCK, &authctxt.success); /* loop until success */
pubkey_cleanup(ssh);
+#ifdef GSSAPI
+ if (authctxt.gss_supported_mechs != NULL) {
+ u_int ms;
+
+ gss_release_oid_set(&ms, &authctxt.gss_supported_mechs);
+ authctxt.gss_supported_mechs = NULL;
+ }
+#endif
ssh->authctxt = NULL;
ssh_dispatch_range(ssh, SSH2_MSG_USERAUTH_MIN, SSH2_MSG_USERAUTH_MAX, NULL);
@@ -820,9 +828,6 @@ userauth_gssapi_cleanup(struct ssh *ssh)
ssh_gssapi_delete_ctx(&gssctxt);
authctxt->methoddata = NULL;
-
- free(authctxt->gss_supported_mechs);
- authctxt->gss_supported_mechs = NULL;
}
static OM_uint32