From b695fcb246581bb55cb16bdcc6b0857e74072f76 Mon Sep 17 00:00:00 2001 From: Luigi Pavan Date: Thu, 30 Jul 2026 12:52:36 +0200 Subject: [PATCH] Don't set no_interaction for --assumeyes Resolves: RHEL-11901 --- ...ont-set-no-interaction-for-assumeyes.patch | 175 ++++++++++++++++++ flatpak.spec | 9 +- 2 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 cli-dont-set-no-interaction-for-assumeyes.patch diff --git a/cli-dont-set-no-interaction-for-assumeyes.patch b/cli-dont-set-no-interaction-for-assumeyes.patch new file mode 100644 index 0000000..fa2f5dc --- /dev/null +++ b/cli-dont-set-no-interaction-for-assumeyes.patch @@ -0,0 +1,175 @@ +From dccb913c6d7b3c5694af3a5e617e671b9a4f4339 Mon Sep 17 00:00:00 2001 +From: Luigi Pavan +Date: Thu, 30 Jul 2026 12:58:43 +0200 +Subject: [PATCH] cli: Don't set no_interaction for --assumeyes + +Backport of commit 0717cd168582473418300eee8baaae988e9c0579. + +Adapted for 1.12.9: different prompt text in end_of_lifed_with_rebase +(`"Replace it with %s?"` instead of `"Replace?"`). +--- + app/flatpak-cli-transaction.c | 24 ++++++++++-------------- + app/flatpak-cli-transaction.h | 2 +- + tests/test-auth.sh | 19 ++++++++++++++++++- + 3 files changed, 29 insertions(+), 16 deletions(-) + +diff --git a/app/flatpak-cli-transaction.c b/app/flatpak-cli-transaction.c +index b8c6776..a8c4693 100644 +--- a/app/flatpak-cli-transaction.c ++++ b/app/flatpak-cli-transaction.c +@@ -34,7 +34,7 @@ struct _FlatpakCliTransaction + { + FlatpakTransaction parent; + +- gboolean disable_interaction; ++ gboolean assume_yes; + gboolean stop_on_first_error; + gboolean non_default_arch; + GError *first_operation_error; +@@ -86,7 +86,7 @@ choose_remote_for_ref (FlatpakTransaction *transaction, + + self->did_interaction = TRUE; + +- if (self->disable_interaction) ++ if (self->assume_yes) + { + g_print (_("Required runtime for %s (%s) found in remote %s\n"), + pref, runtime_ref, remotes[0]); +@@ -122,7 +122,7 @@ add_new_remote (FlatpakTransaction *transaction, + + self->did_interaction = TRUE; + +- if (self->disable_interaction) ++ if (self->assume_yes) + { + g_print (_("Configuring %s as new remote '%s'\n"), url, remote_name); + return TRUE; +@@ -168,7 +168,7 @@ install_authenticator (FlatpakTransaction *old_transaction, + + old_cli->did_interaction = TRUE; + +- transaction2 = flatpak_cli_transaction_new (dir, old_cli->disable_interaction, TRUE, FALSE, &local_error); ++ transaction2 = flatpak_cli_transaction_new (dir, old_cli->assume_yes, TRUE, FALSE, &local_error); + if (transaction2 == NULL) + { + g_printerr ("Unable to install authenticator: %s\n", local_error->message); +@@ -570,7 +570,7 @@ webflow_start (FlatpakTransaction *transaction, + + self->did_interaction = TRUE; + +- if (!self->disable_interaction) ++ if (!self->assume_yes) + { + g_print (_("Authentication required for remote '%s'\n"), remote); + if (!flatpak_yes_no_prompt (TRUE, _("Open browser?"))) +@@ -621,9 +621,6 @@ basic_auth_start (FlatpakTransaction *transaction, + FlatpakCliTransaction *self = FLATPAK_CLI_TRANSACTION (transaction); + char *user, *password, *previous_error = NULL; + +- if (self->disable_interaction) +- return FALSE; +- + self->did_interaction = TRUE; + + if (g_variant_lookup (options, "previous-error", "&s", &previous_error)) +@@ -748,10 +745,10 @@ end_of_lifed_with_rebase (FlatpakTransaction *transaction, + + if (rebased_to_ref && remote) + { +- if (self->disable_interaction || ++ if (self->assume_yes || + flatpak_yes_no_prompt (TRUE, _("Replace it with %s?"), rebased_to_ref)) + { +- if (self->disable_interaction) ++ if (self->assume_yes) + g_print (_("Updating to rebased version\n")); + + action = EOL_REBASE; +@@ -1233,7 +1230,7 @@ transaction_ready_pre_auth (FlatpakTransaction *transaction) + + g_print ("\n"); + +- if (!self->disable_interaction) ++ if (!self->assume_yes) + { + g_autoptr(FlatpakInstallation) installation = flatpak_transaction_get_installation (transaction); + const char *name; +@@ -1368,7 +1365,7 @@ flatpak_cli_transaction_class_init (FlatpakCliTransactionClass *klass) + + FlatpakTransaction * + flatpak_cli_transaction_new (FlatpakDir *dir, +- gboolean disable_interaction, ++ gboolean assume_yes, + gboolean stop_on_first_error, + gboolean non_default_arch, + GError **error) +@@ -1387,11 +1384,10 @@ flatpak_cli_transaction_new (FlatpakDir *dir, + if (self == NULL) + return NULL; + +- self->disable_interaction = disable_interaction; ++ self->assume_yes = assume_yes; + self->stop_on_first_error = stop_on_first_error; + self->non_default_arch = non_default_arch; + +- flatpak_transaction_set_no_interaction (FLATPAK_TRANSACTION (self), disable_interaction); + flatpak_transaction_add_default_dependency_sources (FLATPAK_TRANSACTION (self)); + + return (FlatpakTransaction *) g_steal_pointer (&self); +diff --git a/app/flatpak-cli-transaction.h b/app/flatpak-cli-transaction.h +index 4328185..4175f9b 100644 +--- a/app/flatpak-cli-transaction.h ++++ b/app/flatpak-cli-transaction.h +@@ -28,7 +28,7 @@ + G_DECLARE_FINAL_TYPE (FlatpakCliTransaction, flatpak_cli_transaction, FLATPAK, CLI_TRANSACTION, FlatpakTransaction) + + FlatpakTransaction * flatpak_cli_transaction_new (FlatpakDir * dir, +- gboolean disable_interaction, ++ gboolean assume_yes, + gboolean stop_on_first_error, + gboolean non_default_arch, + GError **error); +diff --git a/tests/test-auth.sh b/tests/test-auth.sh +index 78ff48b..99d8705 100755 +--- a/tests/test-auth.sh ++++ b/tests/test-auth.sh +@@ -22,7 +22,7 @@ set -euo pipefail + . $(dirname $0)/libtest.sh + + +-echo "1..3" ++echo "1..4" + + setup_repo + +@@ -90,6 +90,8 @@ assert_file_has_content ${XDG_RUNTIME_DIR}/request "^uri: http://127.0.0.1:${por + if [ x${USE_COLLECTIONS_IN_CLIENT-} == xyes ] ; then + assert_file_has_content ${XDG_RUNTIME_DIR}/request "^options: .*'collection-id': <'org.test.Collection.test'>" + fi ++# -y/--assumeyes should not send no-interaction to the authenticator (only --noninteractive should) ++assert_not_file_has_content ${XDG_RUNTIME_DIR}/request "no-interaction" + + EXPORT_ARGS="--token-type=2" make_updated_app test "" master UPDATE2 + mark_need_token app/org.test.Hello/$ARCH/master the-secret +@@ -159,3 +161,18 @@ EXPORT_ARGS="--token-type=2" make_updated_app test "" master UPDATE5 + mark_need_token app/org.test.Hello/$ARCH/master the-secret + + ok "update with webflow" ++ ++rm -f ${XDG_RUNTIME_DIR}/request-webflow ++rm -f ${XDG_RUNTIME_DIR}/require-webflow ++ ++${FLATPAK} ${U} uninstall -y org.test.Hello//master org.test.Hello//copy >&2 ++ ++EXPORT_ARGS="--token-type=2" make_updated_app test "" master UPDATE6 ++mark_need_token app/org.test.Hello/$ARCH/master the-secret ++echo -n the-secret > ${XDG_RUNTIME_DIR}/required-token ++ ++${FLATPAK} ${U} install --noninteractive test-repo org.test.Hello master >&2 ++ ++assert_file_has_content ${XDG_RUNTIME_DIR}/request "no-interaction" ++ ++ok "--noninteractive sends no-interaction to the authenticator" +-- +2.52.0 + diff --git a/flatpak.spec b/flatpak.spec index 3268e3f..dcd30f0 100644 --- a/flatpak.spec +++ b/flatpak.spec @@ -3,7 +3,7 @@ Name: flatpak Version: 1.12.9 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Application deployment framework for desktop apps License: LGPLv2+ @@ -62,6 +62,9 @@ Patch130: CVE-2026-34079-1-utils-only-remove-cached-files-in-the-cache-dir Patch131: CVE-2026-34079-2-utils-do-not-follow-symlinks-in-local-open-file.patch Patch132: CVE-2026-34079-3-system-helper-only-remove-an-ongoing-pull-if-users-match.patch +# Don't set no_interaction for --assumeyes (https://github.com/flatpak/flatpak/pull/6744) +Patch133: cli-dont-set-no-interaction-for-assumeyes.patch + BuildRequires: pkgconfig(appstream-glib) BuildRequires: pkgconfig(dconf) @@ -320,6 +323,10 @@ fi %changelog +* Thu Jul 30 2026 Luigi Pavan - 1.12.9-6 +- Don't set no_interaction for --assumeyes + Resolves: RHEL-11901 + * Wed May 20 2026 Jan Grulich - 1.12.9-5 - Fix arbitrary code execution via crafted symlinks in sandbox-expose options Resolves: RHEL-165644