public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Zoltan Fridrich <zfridric@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/openssh] rawhide: Fix CVE-2026-55654
Date: Tue, 07 Jul 2026 11:40:38 GMT [thread overview]
Message-ID: <178342443834.1.8239627929852693578.rpms-openssh-beb33e3c84f1@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/openssh
Branch : rawhide
Commit : beb33e3c84f1731cdf00cfec018c82bc0ed48a16
Author : Zoltan Fridrich <zfridric@redhat.com>
Date : 2026-07-07T12:09:58+02:00
Stats : +40/-34 in 2 file(s)
URL : https://src.fedoraproject.org/rpms/openssh/c/beb33e3c84f1731cdf00cfec018c82bc0ed48a16?branch=rawhide
Log:
Fix CVE-2026-55654
Fix heap out-of-bounds read during GSSAPI indicator
cleanup due to missing NULL terminator
Signed-off-by: Zoltan Fridrich <zfridric@redhat.com>
---
diff --git a/0047-support-authentication-indicators-in-GSSAPI.patch b/0047-support-authentication-indicators-in-GSSAPI.patch
index 1016890..e875ef4 100644
--- a/0047-support-authentication-indicators-in-GSSAPI.patch
+++ b/0047-support-authentication-indicators-in-GSSAPI.patch
@@ -173,7 +173,7 @@ index 6eb7d2163..686ac4eb3 100644
ssh_gssapi_mech gssapi_null_mech =
{ NULL, NULL, {0, NULL}, NULL, NULL, NULL, NULL, NULL};
-@@ -297,6 +297,95 @@ ssh_gssapi_parse_ename(Gssctxt *ctx, gss_buffer_t ename, gss_buffer_t name)
+@@ -295,6 +295,99 @@ ssh_gssapi_parse_ename(Gssctxt *ctx, gss
return GSS_S_COMPLETE;
}
@@ -196,63 +196,67 @@ index 6eb7d2163..686ac4eb3 100644
+ int is_mechname, authenticated, complete, more;
+ size_t count, i;
+
++ /* always initialize client->indicators */
++ client->indicators = NULL;
++
+ ctx->major = gss_inquire_name(&ctx->minor, gss_name,
+ &is_mechname, NULL, &attrs);
-+ if (ctx->major != GSS_S_COMPLETE) {
-+ return (ctx->major);
-+ }
++ if (ctx->major != GSS_S_COMPLETE)
++ return ctx->major;
+
+ if (attrs == GSS_C_NO_BUFFER_SET) {
-+ /* No indicators in the ticket */
-+ return (0);
++ /* no indicators in the ticket */
++ return GSS_S_COMPLETE;
+ }
+
-+ client->indicators = NULL;
++ /* client->indicators is NULL terminated */
+ count = 0;
++ client->indicators = xcalloc(count + 1, sizeof(char *));
++
+ for (i = 0; i < attrs->count; i++) {
+ authenticated = 0;
+ complete = 0;
+ more = -1;
++
+ /* skip anything but auth-indicators */
+ if (((sizeof(AUTH_INDICATORS_TAG) - 1) != attrs->elements[i].length) ||
-+ memcmp(AUTH_INDICATORS_TAG,
-+ attrs->elements[i].value,
++ memcmp(AUTH_INDICATORS_TAG, attrs->elements[i].value,
+ sizeof(AUTH_INDICATORS_TAG) - 1) != 0)
+ continue;
++
+ /* retrieve all indicators */
+ while (more != 0) {
+ value.value = NULL;
+ display_value.value = NULL;
++
+ ctx->major = gss_get_name_attribute(&ctx->minor, gss_name,
-+ &attrs->elements[i], &authenticated,
-+ &complete, &value, &display_value, &more);
++ &attrs->elements[i],
++ &authenticated, &complete,
++ &value, &display_value, &more);
+ if (ctx->major != GSS_S_COMPLETE)
+ goto out;
+
-+ if ((value.value != NULL) && authenticated) {
-+ if (count >= SSH_GSSAPI_MAX_INDICATORS) {
-+ logit("ssh_gssapi_getindicators: too many "
-+ "indicators, truncating at %d",
-+ SSH_GSSAPI_MAX_INDICATORS);
-+ /* value/display_value released at out: */
-+ goto done;
-+ }
++ if (value.value == NULL || !authenticated)
++ continue;
+
-+ client->indicators = xrecallocarray(client->indicators, count, count + 1, sizeof(char*));
-+ if (client->indicators == NULL) {
-+ fatal("ssh_gssapi_getindicators failed to allocate memory");
-+ }
-+ client->indicators[count] = xmalloc(value.length + 1);
-+ memcpy(client->indicators[count], value.value, value.length);
-+ client->indicators[count][value.length] = '\0';
-+ count++;
++ if (count >= SSH_GSSAPI_MAX_INDICATORS) {
++ logit("ssh_gssapi_getindicators:"
++ " too many indicators, truncating at %d",
++ SSH_GSSAPI_MAX_INDICATORS);
++ goto out;
+ }
++
++ client->indicators[count] = xmalloc(value.length + 1);
++ memcpy(client->indicators[count], value.value, value.length);
++ client->indicators[count][value.length] = '\0';
++ count++;
++
++ /* add NULL terminator */
++ client->indicators = xrecallocarray(client->indicators, count,
++ count + 1, sizeof(char *));
+ }
+ }
+
-+done:
-+ /* slot [count] is zeroed by recallocarray, serves as NULL sentinel */
-+
+out:
+ if (ctx->major != GSS_S_COMPLETE && client->indicators != NULL) {
+ for (i = 0; i < count; i++)
@@ -260,10 +264,10 @@ index 6eb7d2163..686ac4eb3 100644
+ free(client->indicators);
+ client->indicators = NULL;
+ }
-+ (void) gss_release_buffer(&ctx->minor, &value);
-+ (void) gss_release_buffer(&ctx->minor, &display_value);
-+ (void) gss_release_buffer_set(&ctx->minor, &attrs);
-+ return (ctx->major);
++ gss_release_buffer(&ctx->minor, &value);
++ gss_release_buffer(&ctx->minor, &display_value);
++ gss_release_buffer_set(&ctx->minor, &attrs);
++ return ctx->major;
+}
+
/* Extract the client details from a given context. This can only reliably
diff --git a/openssh.spec b/openssh.spec
index 677e62a..19efd63 100644
--- a/openssh.spec
+++ b/openssh.spec
@@ -517,6 +517,8 @@ test -f %{sysconfig_anaconda} && \
* Tue Jul 07 2026 Zoltan Fridrich <zfridric@redhat.com> - 10.3p1-5
- CVE-2026-55653: Fix double free in openssh DH-GEX client path during
FIPS known-group validation that leads to client-side denial of service
+- CVE-2026-55654: Fix heap out-of-bounds read during GSSAPI indicator
+ cleanup due to missing NULL terminator
* Fri Jun 12 2026 Dmitry Belyavskiy <dbelyavs@redhat.com> - 10.3p1-4
- Rebuild against OpenSSL 4.0.1
reply other threads:[~2026-07-07 11:40 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178342443834.1.8239627929852693578.rpms-openssh-beb33e3c84f1@fedoraproject.org \
--to=zfridric@redhat.com \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox