[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 Sun, 09 Apr 2023 18:51:39 +0000
with message-id <E1pla8Z-002bcS-JI@fasolo.debian.org>
and subject line Bug#1033995: fixed in qtbase-opensource-src 5.15.8+dfsg-4
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-4
Done: Dmitry Shachnev <mitya57@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.
Dmitry Shachnev <mitya57@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: Sun, 09 Apr 2023 21:23:36 +0300
Source: qtbase-opensource-src
Architecture: source
Version: 5.15.8+dfsg-4
Distribution: unstable
Urgency: medium
Maintainer: Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Changed-By: Dmitry Shachnev <mitya57@debian.org>
Closes: 1033995
Changes:
 qtbase-opensource-src (5.15.8+dfsg-4) unstable; urgency=medium
 .
   * Add a patch to fix accessibility on XCB when running as root
     (closes: #1033995).
Checksums-Sha1:
 0df1a9f628d2984bbf95698a2a13d32408fc13bc 5430 qtbase-opensource-src_5.15.8+dfsg-4.dsc
 04754c72933220b3ed270122175460a785433e19 231024 qtbase-opensource-src_5.15.8+dfsg-4.debian.tar.xz
 b00ac28b71c8fe873f1d3a1c69d798e05489853f 15606 qtbase-opensource-src_5.15.8+dfsg-4_source.buildinfo
Checksums-Sha256:
 9d15e0996a0f5b6337014fd4d00ba75f600e9deb5b5d4a04db167629cfcadca3 5430 qtbase-opensource-src_5.15.8+dfsg-4.dsc
 e63d8416fa618e1ad223c60e61bc7f07cea194038a638efd218758a78ffe76dc 231024 qtbase-opensource-src_5.15.8+dfsg-4.debian.tar.xz
 3efe8197531231e35599e01a3af96421c7d0285fd3e44806d56a4ff37f01fad4 15606 qtbase-opensource-src_5.15.8+dfsg-4_source.buildinfo
Files:
 18dbaa683b32cb20636269bf252373ae 5430 libs optional qtbase-opensource-src_5.15.8+dfsg-4.dsc
 c504d15bd3d7db109c7cee6c944a0bc6 231024 libs optional qtbase-opensource-src_5.15.8+dfsg-4.debian.tar.xz
 68becdc8e4e932a1aa979135bde77741 15606 libs optional qtbase-opensource-src_5.15.8+dfsg-4_source.buildinfo

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

iQJHBAEBCgAxFiEE5688gqe4PSusUZcLZkYmW1hrg8sFAmQzA3QTHG1pdHlhNTdA
ZGViaWFuLm9yZwAKCRBmRiZbWGuDy2CRD/4noKGq6Nm+WIj2avTF+94NkA1B//Cd
rqafa+BAHLrFuz6V2DxyDtf8bTLWBb6iP9K4gjro1SB3Aclb888mkbyZ0YxNCeQr
BwVU+Tn3VV8tvyf+jlIK5WZdzOQpwSsyhk9nPJltGxAVtCsSm9mHKepFZQKTHTF5
Om10iPV+rNAHmqILsSdqaLESZ7xPOlL68keARjrUorQkmbqea7pLEs70VpNHke9e
+glv4K7RdArvtgy4P/Wr60qyAiqjYcV18ilzQ9HS1zM4L7vLP3CuM63a6uH/EJJm
8/sNjjCHKE0dg1hFUwWsLzsgptoWkrYEZu8zY8tzjLrBruj0VbtiqRC+0KOY0zTh
qqGqvSjJI/XVcuJrXA6tMQRNq68S304e2FXiaxSvJ9bp/9yBK0mt68KepyJMf5R1
Fo2xx24LIEimk3+b0fLhT6b9oTLwOeowkEor4YZus0spDN94u0wvKVLcLYaYZkgZ
/kA9pAiC6+SlUjSqlztS4KxpxZk9xbeiN6alYn56btY2frtZ3ZGL9y6UXkqmFm+6
BB+XyjDAktWEDbLkOZPmr+aCQno6JWZcRvexcvIZcxErSzWuwQDFoch58ICsDQPl
d3LY1ld6291TeguYs1WGJFM9QpBHsTX6nmsQ/Uyz9l4+0xepME0SPkcOQp9YKfIP
/UJlh52QIPM9aQ==
=7Qrn
-----END PGP SIGNATURE-----

--- End Message ---

Reply to: