qt6-bb10/tests/auto/corelib/kernel
Tor Arne Vestbø 9661cde161 Apple: Use POSIX IPC instead of System V in sandboxed applications
System V semaphores are not supported in sandboxed applications,
so when Qt is configured with App Store compliance, or the user
requests POSIX IPC explicitly, we use that instead.

https://developer.apple.com/library/archive/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html#//apple_ref/doc/uid/TP40011183-CH3-SW24

As the shared memory name limit on Apple platforms is very low,
we have to skip the existing logic for naming, and instead use
a truncated hash of the key. This should still be fine for
avoiding any collisions in practice.

An explicit check for the ENAMETOOLONG error has been added to
catch any cases where they key goes beyond the allowed length.

Sandboxed applications also have an extra requirement that the
key must include an application group identifier. This requirement
has been pushed up to the user and documented, as we don't have
enough information in Qt to know which identifier to use.

Both tst_QSystemSemaphore and tst_QSharedMemory work as before
with both sandboxed and non-sandboxed applications, after removing
some assumptions in tst_QSharedMemory about System V behavior.

Fixes: QTBUG-91130
Change-Id: Iaf1edb36a5d84d69e42ec31471a48d112faa8c6a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-06-16 15:53:23 +02:00
..
qcoreapplication Remove .prev_CMakeLists.txt files 2021-01-12 20:59:13 +01:00
qdeadlinetimer Remove the qmake project files 2021-01-07 15:32:28 +01:00
qelapsedtimer Remove the qmake project files 2021-01-07 15:32:28 +01:00
qeventdispatcher QEventDispatcher(Win): Always honor interrupted status to avoid races 2021-03-11 12:11:18 +01:00
qeventloop Remove the qmake project files 2021-01-07 15:32:28 +01:00
qjnienvironment JNI: Add calls to get field IDs 2021-06-04 10:46:57 +03:00
qjniobject Fix set*Field JNI template calls 2021-05-05 16:28:27 +03:00
qmath Add qHypot() to qmath.h, exposing and extending std::hypot() 2021-01-27 15:00:57 +01:00
qmetacontainer Remove the qmake project files 2021-01-07 15:32:28 +01:00
qmetaenum Remove the qmake project files 2021-01-07 15:32:28 +01:00
qmetamethod QMetaMethod: Store method constness in metaobject system 2021-05-07 21:50:58 +02:00
qmetaobject Introduce QMetaObject::metaType 2021-03-25 17:33:07 +01:00
qmetaobjectbuilder QMetaObjectBuilder: remove unused serialization code 2021-03-20 10:24:27 +01:00
qmetaproperty Remove the qmake project files 2021-01-07 15:32:28 +01:00
qmetatype normalizeTypeFromSignature: Beware of anonymous struct/union 2021-06-08 15:37:38 +02:00
qmimedata Remove the qmake project files 2021-01-07 15:32:28 +01:00
qobject QObject: port to new property system 2021-04-21 15:34:28 +02:00
qpointer Remove the qmake project files 2021-01-07 15:32:28 +01:00
qproperty QProperty: Do not involve semi-destroyed QObjects in bindings 2021-06-07 13:14:00 +02:00
qsharedmemory Apple: Use POSIX IPC instead of System V in sandboxed applications 2021-06-16 15:53:23 +02:00
qsignalblocker Remove the qmake project files 2021-01-07 15:32:28 +01:00
qsignalmapper Remove the qmake project files 2021-01-07 15:32:28 +01:00
qsocketnotifier tst_socketnotifier: Fix timeout of QTcpServer::waitForNewConnection() 2021-01-21 08:53:35 +00:00
qsystemsemaphore Remove the qmake project files 2021-01-07 15:32:28 +01:00
qtimer Fix QTimer::setInterval to remove existing bindings 2021-02-15 13:47:31 +01:00
qtranslator Remove the qmake project files 2021-01-07 15:32:28 +01:00
qvariant Fix some warnings 2021-03-31 10:51:50 +02:00
qwineventnotifier Repair tst_qwineventnotifier 2021-03-29 15:54:05 +02:00
CMakeLists.txt Repair tst_qwineventnotifier 2021-03-29 15:54:05 +02:00