[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 Tue, 11 Apr 2023 11:51:52 +0000
with message-id <E1pmCXQ-00Ao6m-DH@fasolo.debian.org>
and subject line Bug#1033995: fixed in qtbase-opensource-src 5.15.8+dfsg-6
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-6
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: Tue, 11 Apr 2023 14:25:22 +0300
Source: qtbase-opensource-src
Architecture: source
Version: 5.15.8+dfsg-6
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-6) unstable; urgency=medium
 .
   * Use the new, fixed version of a11y_root.diff from Samuel Thibault
     (again closes: #1033995).
Checksums-Sha1:
 a6d92bdfb9546a33ac20aceb085f2f775aad577f 5430 qtbase-opensource-src_5.15.8+dfsg-6.dsc
 72cc49682edbd659099016fac77337819fba2dc4 230968 qtbase-opensource-src_5.15.8+dfsg-6.debian.tar.xz
 42d299658cfa3f5279649e5b18753917272abc0a 15606 qtbase-opensource-src_5.15.8+dfsg-6_source.buildinfo
Checksums-Sha256:
 c9041e1801962b4f956a8f24515b30e59deb0a46c2771ebad8e8c841efd01b35 5430 qtbase-opensource-src_5.15.8+dfsg-6.dsc
 69e914b936c42619d5013f82e3afe3631a40a674aa3cf8ff6d5620b5efa82f9b 230968 qtbase-opensource-src_5.15.8+dfsg-6.debian.tar.xz
 bbcce1b8a8c11ad7b15cf4ccbeeb6a4565a6b95c51231321199be97d3a285bbb 15606 qtbase-opensource-src_5.15.8+dfsg-6_source.buildinfo
Files:
 eb5b652e7962c4973cc3e2995211fc97 5430 libs optional qtbase-opensource-src_5.15.8+dfsg-6.dsc
 b0b5f74b160209fd7e00db42881b3b7f 230968 libs optional qtbase-opensource-src_5.15.8+dfsg-6.debian.tar.xz
 abf3ce76c9118fb52ea0df6961ebcb0f 15606 libs optional qtbase-opensource-src_5.15.8+dfsg-6_source.buildinfo

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

iQJHBAEBCgAxFiEE5688gqe4PSusUZcLZkYmW1hrg8sFAmQ1RncTHG1pdHlhNTdA
ZGViaWFuLm9yZwAKCRBmRiZbWGuDy2ukD/wLI3D6vfqj6d6SHWohXxXDondgN3L5
9HbuM8501mQB3ICUA1veE5Bj9B1H23Qqfh/mwktBY1K3ogJ5aCHE0cuQWxAb2kO6
BvGExUu89fV6YbYvX87byzemh2IOcssSNjA7oBkDpVor1OzD7oLdPhFLSS1T1frb
h0XoY5SOqQYd9CkZ0lXDs7ZWWXzW0yRARDmz+WsVC1qRCcATtQLoILAg6JuHPY6F
/TK7mPPLT0FS5L6j1UxBBhn+kJ7CtXra30jI/EJNZA/CdLpbZ4OBIE/XIMRBSkJz
vgbuOt2r4dibwq2DEu0zTY6xITqPUJiNwdSTjJpUvSKzjEOrtDWfZ2v1LiTyTukB
y0l8e767SuKKKyR4z1xgvS1BOOdGy+xLd70P5JRPcXFDHC7TzV6pWr4Vk7xNtIVf
bMj12AO01b/5TRo5Vj9kykr83Jrg5em1JIPeDc94SJ9p4rH3ZpQ0kpJMlN0NSWRk
S8ZV4gYXXOKmfbnwRgq7XnYA2yP3WeLB5Ujwo6cNqZEZPn1Er5ddd7zGl/5N027i
1IR8Dgidjt5gL3CJBBpPF/84tdhG9JGvpWlM9ErahfOLBedoeYheM2FQ1XfQmiy2
mlAQkErldnah2b2BzaL2gyJyM9p7H553RPLgOImTr55Tkh+rmVeU/wNJTfndVEG5
XY+16GfYs59EmA==
=Wt8k
-----END PGP SIGNATURE-----

--- End Message ---

Reply to: