[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1033995: marked as done (qtbase-opensource-src: Fix accessibility of qt5 applications run as root)



Your message dated Thu, 13 Apr 2023 00:12:40 +0000
with message-id <E1pmkZs-003wZQ-Q4@fasolo.debian.org>
and subject line Bug#1033995: fixed in qtbase-opensource-src 5.15.8+dfsg-7
has caused the Debian Bug report #1033995,
regarding qtbase-opensource-src: Fix accessibility of qt5 applications run as root
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
1033995: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1033995
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Source: qtbase-opensource-src
Version: 5.15.8+dfsg-3
Severity: important
Tags: patch upstream
Forwarded: https://bugreports.qt.io/browse/QTBUG-43674

Hello,

Currently, qt5 applications, when run in sudo, are not accessible to
screen readers. This is because the accessibility layer does not manage
to connect to the accessibility bus to export the application content:

https://bugreports.qt.io/browse/QTBUG-43674

Most of the support was merged into qt5, but there is a little fix
missing, that was missed by upstream. I have attached the fix, it is
very simple: the ordering in QSpiAccessibleBridge::QSpiAccessibleBridge
used to be

- new DBusConnection() creates the dbusConnection object
  - the DBusConnection::DBusConnection constructor connects to the atspi
    bus
- connect the enabledChanged signal

and this patch changes it to:

- new DBusConnection() creates the dbusConnection object
- connect the enabledChanged signal
- the DBusConnection::init method connects to the atspi bus

This is needed in the root case because since in that case it
cannot access the user session dbus, it uses a synchronous method,
in which case the enabledChanged signal is emitted from the
DBusConnection::DBusConnection constructor, and thus lost forever since
it was not connected yet at that time. So we need to connect the signal
before connecting to the atspi bus (and get the enabledChanged event).


This is particularly important because the calamares installer is based
on qt5 and runs as root, and it currently is completely inaccessible to
blind users, and this fix makes it possible for blind users to use it.


I have confirmed that this fixes the issue for bookworm, would it be
possible to upload to unstable? I'll then handle requesting the unblock
from the release team.

Samuel

-- System Information:
Debian Release: 12.0
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable-debug'), (500, 'testing-debug'), (500, 'stable-security'), (500, 'stable-debug'), (500, 'proposed-updates-debug'), (500, 'proposed-updates'), (500, 'oldstable-proposed-updates'), (500, 'oldoldstable'), (500, 'buildd-unstable'), (500, 'unstable'), (500, 'stable'), (500, 'oldstable'), (1, 'experimental-debug'), (1, 'buildd-experimental'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, arm64

Kernel: Linux 6.2.0 (SMP w/8 CPU threads; PREEMPT)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
From: Frederik Gladhorn <frederik.gladhorn@qt.io>
Date: Tue, 12 Sep 2017 09:22:30 +0000 (+0200)
Subject: Fix accessibility on XCB when running as root
X-Git-Url: https://codereview.qt-project.org/gitweb?p=qt%2Fqtbase.git;a=commitdiff_plain;h=4ee3703ffaf063047285247016ee9e5c07ef3b53;hp=689606de91faecf91f1f92e8d355789d9be62d2f
Forwarded: https://bugreports.qt.io/browse/QTBUG-43674

Fix accessibility on XCB when running as root

Accessibility actually works when running applications as root, but we
would never properly connect, since the enabledChanged signal would be
emitted from the constructor in this case.
Only applications running as root would be affected, because all other
applications would go through the asynchronous pattern of getting the
bus address from dbus instead.
Since running apps as root won't let them access the session bus, the
xatom is the way to go.

[ChangeLog][QtGui][Accessibility] On XCB applications running as root are
now accessible.

Task-number: QTBUG-43674
Change-Id: I82cdc35f00693a8366dfcdab2f2c3c6dc5f5b783
---

---
 src/platformsupport/linuxaccessibility/bridge.cpp         |    1 +
 src/platformsupport/linuxaccessibility/dbusconnection.cpp |    8 ++++++++
 src/platformsupport/linuxaccessibility/dbusconnection_p.h |    1 +
 3 files changed, 10 insertions(+)

--- a/src/platformsupport/linuxaccessibility/bridge.cpp
+++ b/src/platformsupport/linuxaccessibility/bridge.cpp
@@ -65,6 +65,7 @@ QSpiAccessibleBridge::QSpiAccessibleBrid
 {
     dbusConnection = new DBusConnection();
     connect(dbusConnection, SIGNAL(enabledChanged(bool)), this, SLOT(enabledChanged(bool)));
+    dbusConnection->init();
 }
 
 void QSpiAccessibleBridge::enabledChanged(bool enabled)
--- a/src/platformsupport/linuxaccessibility/dbusconnection.cpp
+++ b/src/platformsupport/linuxaccessibility/dbusconnection.cpp
@@ -69,6 +69,14 @@ QT_BEGIN_NAMESPACE
 DBusConnection::DBusConnection(QObject *parent)
     : QObject(parent), m_a11yConnection(QString()), m_enabled(false)
 {
+}
+
+/**
+    \internal
+    Connect to the accessibility dbus service.
+*/
+void DBusConnection::init()
+{
     // Start monitoring if "org.a11y.Bus" is registered as DBus service.
     QDBusConnection c = QDBusConnection::sessionBus();
     if (!c.isConnected()) {
--- a/src/platformsupport/linuxaccessibility/dbusconnection_p.h
+++ b/src/platformsupport/linuxaccessibility/dbusconnection_p.h
@@ -67,6 +67,7 @@ class DBusConnection : public QObject
 public:
     DBusConnection(QObject *parent = nullptr);
     QDBusConnection connection() const;
+    void init();
     bool isEnabled() const { return m_enabled; }
 
 Q_SIGNALS:

--- End Message ---
--- Begin Message ---
Source: qtbase-opensource-src
Source-Version: 5.15.8+dfsg-7
Done: Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>

We believe that the bug you reported is fixed in the latest version of
qtbase-opensource-src, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1033995@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org> (supplier of updated qtbase-opensource-src package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Wed, 12 Apr 2023 20:24:34 -0300
Source: qtbase-opensource-src
Architecture: source
Version: 5.15.8+dfsg-7
Distribution: unstable
Urgency: medium
Maintainer: Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Changed-By: Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>
Closes: 1033995 1034160 1034271
Changes:
 qtbase-opensource-src (5.15.8+dfsg-7) unstable; urgency=medium
 .
   * Update a11y_root.diff. This time the code waits for Qt loop to process the
     check (Closes: #1033995, #1034160, #1034271).
Checksums-Sha1:
 1a0b9b7c22d41764ece1ded30e697c4e222fb11a 5430 qtbase-opensource-src_5.15.8+dfsg-7.dsc
 7cf5dd664ac17213cb19b1ffdbad5aec0b05a55a 231232 qtbase-opensource-src_5.15.8+dfsg-7.debian.tar.xz
 1fb6da1057f67c9277c9d8e40b3e9022f58e95ab 17785 qtbase-opensource-src_5.15.8+dfsg-7_source.buildinfo
Checksums-Sha256:
 4eaa662ba36e20aad3409a3d41c43e0147fe8fe16338846a722ae1fc1c832241 5430 qtbase-opensource-src_5.15.8+dfsg-7.dsc
 42f28f3e6094dcf16006dfa158103b4acca0b917f2f93266ca344fcea602da65 231232 qtbase-opensource-src_5.15.8+dfsg-7.debian.tar.xz
 e5fc2e2af14a08904e0d837f362529084fe53802b00c0a0e2e9eeba9edfcf7c1 17785 qtbase-opensource-src_5.15.8+dfsg-7_source.buildinfo
Files:
 df895924e04827efb330592ba8d937d7 5430 libs optional qtbase-opensource-src_5.15.8+dfsg-7.dsc
 7435869d1a650050539607b3d9f7804a 231232 libs optional qtbase-opensource-src_5.15.8+dfsg-7.debian.tar.xz
 2e87a84140a0963d9e31db3c6b2770b6 17785 libs optional qtbase-opensource-src_5.15.8+dfsg-7_source.buildinfo

-----BEGIN PGP SIGNATURE-----

iQJIBAEBCgAyFiEEEt36hKwjsrvwSzE8q2RfQGKGp9AFAmQ3PdoUHGxpc2FuZHJv
QGRlYmlhbi5vcmcACgkQq2RfQGKGp9BHOg/7BQ/cET7DLuNDZxwcMsCSf12sdYQD
TTQ2wLnNOxeVU3dDuGbIxXvXvz0pU1lWoWSb1ld5IiOUF0OWhrtPSzO5cuJ7BarC
TFVEeR5CiV5URXUvTelcCV0t+70+V7rE6GC5WE69uKu4g+nFnE5oRgoc/P9tgZRr
aziOQQzp+3541lFt6IlPG6mfzOpFz66rqZkeFFnj+JQ7N6EezX9tLxZqnyA2MowB
KzdXskee2PC/6Vc+fHVwAckR0d6cVtrt95CGaPAyu7KXjcdbPP5XB3+fZLrQlR2a
s5I4TG1GcWc//8XQo3wS6Vvwk6g3WZPSB7JeL1Z90jEe1/oaohlwdOiT/X/NbMKl
8gOlbzlMARn/bubLo26Hd3yX/jhDKEjYbv+94HKvRQK6ZSKFPdoQnUq106nhJO9X
9ZnQKiXqy3i9diFMWDKolPYFMkcpY5lAcFdqRttwgQu4VC2oZWrUzlR/I03LjLmT
br2w7KDEkmdxtsF3FBMJ/3AtFPzjjNKI7leDe7tClILCGcNcqDy26/yNOJxnlZ+E
wxO6U4Yr5U9w5umpQer7xpoVwhNJTdteZkAXHKzXKf4dWDRt96AZLgkbCBjKk5tQ
IaWTJjxmeDop/Qlyse4/1aHmoxgh4LW3ODiyI5V/6LigKsHy2AE7Z83QJ2LynWJu
dlLVQdOlNKpuPfM=
=H43g
-----END PGP SIGNATURE-----

--- End Message ---

Reply to: