Version in base suite: 1.14.8-2~deb12u1 Base version: dbus_1.14.8-2~deb12u1 Target version: dbus_1.14.10-1~deb12u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/d/dbus/dbus_1.14.8-2~deb12u1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/d/dbus/dbus_1.14.10-1~deb12u1.dsc AUTHORS | 2 Makefile.in | 2 NEWS | 19 +++++ aminclude_static.am | 2 build-aux/ltmain.sh | 28 ++----- bus/Makefile.in | 2 bus/bus.c | 35 +++++++++ bus/bus.h | 1 bus/connection.c | 18 +++-- bus/policy.c | 2 cmake/DBus1ConfigVersion.cmake | 2 configure | 26 +++---- configure.ac | 4 - dbus/Makefile.in | 2 dbus/dbus-sysdeps-unix.c | 9 -- dbus/dbus-sysdeps-util-unix.c | 6 + dbus/dbus-sysdeps-util-win.c | 15 +++- dbus/dbus-sysdeps.h | 3 dbus/dbus-userdb-util.c | 15 ++-- dbus/dbus-userdb.h | 3 debian/20dbus_xdg-runtime | 6 + debian/changelog | 26 +++++++ test/CMakeLists.txt | 1 test/Makefile.am | 4 + test/Makefile.in | 32 +++++++- test/internals/misc-internals.c | 6 - test/internals/userdb.c | 143 ++++++++++++++++++++++++++++++++++++++++ 27 files changed, 338 insertions(+), 76 deletions(-) diff -Nru dbus-1.14.8/AUTHORS dbus-1.14.10/AUTHORS --- dbus-1.14.8/AUTHORS 2023-06-06 13:00:36.000000000 +0000 +++ dbus-1.14.10/AUTHORS 2023-09-01 14:28:31.000000000 +0000 @@ -38,6 +38,7 @@ Colin Watson Cosimo Alfarano Cosimo Alfarano +cptpcrd Cristian Onet Cristian Rodríguez Cristian Rodríguez @@ -170,6 +171,7 @@ Paul Bolle Pavel Strashkin Pavel Strashkin +Peter Benie Peter Breitenlohner Peter Kümmel Peter McCurdy diff -Nru dbus-1.14.8/Makefile.in dbus-1.14.10/Makefile.in --- dbus-1.14.8/Makefile.in 2023-06-06 13:02:00.000000000 +0000 +++ dbus-1.14.10/Makefile.in 2023-09-01 14:31:27.000000000 +0000 @@ -15,7 +15,7 @@ @SET_MAKE@ # aminclude_static.am generated automatically by Autoconf -# from AX_AM_MACROS_STATIC on Tue Jun 6 14:01:59 BST 2023 +# from AX_AM_MACROS_STATIC on Fri Sep 1 15:31:27 BST 2023 VPATH = @srcdir@ am__is_gnu_make = { \ diff -Nru dbus-1.14.8/NEWS dbus-1.14.10/NEWS --- dbus-1.14.8/NEWS 2023-06-06 13:00:36.000000000 +0000 +++ dbus-1.14.10/NEWS 2023-09-01 14:30:45.000000000 +0000 @@ -1,3 +1,22 @@ +dbus 1.14.10 (2023-09-01) +========================= + +Bug fixes: + +• Avoid a dbus-daemon crash if re-creating a connection's policy fails. + If it isn't possible to re-create its policy (for example if it belongs + to a user account that has been deleted or if the Name Service Switch is + broken, on a system not supporting SO_PEERGROUPS), we now log a warning, + continue to use its current policy, and continue to reload other + connections' policies. (dbus#343; Peter Benie, Simon McVittie) + +• If getting the groups from a user ID fails, report the error correctly, + instead of logging "(null)" (dbus#343, Simon McVittie) + +• Return the primary group ID in GetConnectionCredentials()' UnixGroupIDs + field for processes with a valid-but-empty supplementary group list + (dbus!422, cptpcrd) + dbus 1.14.8 (2023-06-06) ======================== diff -Nru dbus-1.14.8/aminclude_static.am dbus-1.14.10/aminclude_static.am --- dbus-1.14.8/aminclude_static.am 2023-06-06 13:01:59.000000000 +0000 +++ dbus-1.14.10/aminclude_static.am 2023-09-01 14:31:27.000000000 +0000 @@ -1,6 +1,6 @@ # aminclude_static.am generated automatically by Autoconf -# from AX_AM_MACROS_STATIC on Tue Jun 6 14:01:59 BST 2023 +# from AX_AM_MACROS_STATIC on Fri Sep 1 15:31:27 BST 2023 # Code coverage diff -Nru dbus-1.14.8/build-aux/ltmain.sh dbus-1.14.10/build-aux/ltmain.sh --- dbus-1.14.8/build-aux/ltmain.sh 2023-06-06 11:05:03.000000000 +0000 +++ dbus-1.14.10/build-aux/ltmain.sh 2023-09-01 14:26:33.000000000 +0000 @@ -31,7 +31,7 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.7 Debian-2.4.7-5" +VERSION="2.4.7 Debian-2.4.7-7" package_revision=2.4.7 @@ -572,27 +572,15 @@ # --------------------- # Append VALUE onto the existing contents of VAR. - # We should try to minimise forks, especially on Windows where they are - # unreasonably slow, so skip the feature probes when bash or zsh are - # being used: - if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then - : ${_G_HAVE_ARITH_OP="yes"} - : ${_G_HAVE_XSI_OPS="yes"} - # The += operator was introduced in bash 3.1 - case $BASH_VERSION in - [12].* | 3.0 | 3.0*) ;; - *) - : ${_G_HAVE_PLUSEQ_OP="yes"} - ;; - esac - fi - # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. - test -z "$_G_HAVE_PLUSEQ_OP" \ - && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ - && _G_HAVE_PLUSEQ_OP=yes + if test -z "$_G_HAVE_PLUSEQ_OP" && \ + __PLUSEQ_TEST="a" && \ + __PLUSEQ_TEST+=" b" 2>/dev/null && \ + test "a b" = "$__PLUSEQ_TEST"; then + _G_HAVE_PLUSEQ_OP=yes + fi if test yes = "$_G_HAVE_PLUSEQ_OP" then @@ -2308,7 +2296,7 @@ compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) - version: $progname $scriptversion Debian-2.4.7-5 + version: $progname $scriptversion Debian-2.4.7-7 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` diff -Nru dbus-1.14.8/bus/Makefile.in dbus-1.14.10/bus/Makefile.in --- dbus-1.14.8/bus/Makefile.in 2023-06-06 13:02:00.000000000 +0000 +++ dbus-1.14.10/bus/Makefile.in 2023-09-01 14:31:28.000000000 +0000 @@ -15,7 +15,7 @@ @SET_MAKE@ # aminclude_static.am generated automatically by Autoconf -# from AX_AM_MACROS_STATIC on Tue Jun 6 14:01:59 BST 2023 +# from AX_AM_MACROS_STATIC on Fri Sep 1 15:31:27 BST 2023 diff -Nru dbus-1.14.8/bus/bus.c dbus-1.14.10/bus/bus.c --- dbus-1.14.8/bus/bus.c 2022-10-02 14:06:53.000000000 +0000 +++ dbus-1.14.10/bus/bus.c 2023-09-01 14:23:58.000000000 +0000 @@ -1412,11 +1412,42 @@ BusClientPolicy* bus_context_create_client_policy (BusContext *context, DBusConnection *connection, + BusClientPolicy *previous, DBusError *error) { + BusClientPolicy *client; + DBusError local_error = DBUS_ERROR_INIT; + const char *conn; + const char *loginfo; + _DBUS_ASSERT_ERROR_IS_CLEAR (error); - return bus_policy_create_client_policy (context->policy, connection, - error); + + client = bus_policy_create_client_policy (context->policy, connection, + &local_error); + + /* On success, use new policy */ + if (client != NULL) + return client; + + /* On failure while setting up a new connection, fail */ + if (previous == NULL) + { + dbus_move_error (&local_error, error); + return NULL; + } + + /* On failure while reloading, keep the previous policy */ + conn = bus_connection_get_name (connection); + loginfo = bus_connection_get_loginfo (connection); + + if (conn == NULL) + conn = "(inactive)"; + + bus_context_log (context, DBUS_SYSTEM_LOG_WARNING, + "Unable to reload policy for connection \"%s\" (%s), " + "keeping current policy: %s", + conn, loginfo, local_error.message); + return bus_client_policy_ref (previous); } int diff -Nru dbus-1.14.8/bus/bus.h dbus-1.14.10/bus/bus.h --- dbus-1.14.8/bus/bus.h 2022-10-02 14:06:53.000000000 +0000 +++ dbus-1.14.10/bus/bus.h 2023-09-01 14:23:58.000000000 +0000 @@ -115,6 +115,7 @@ BusClientPolicy* bus_context_create_client_policy (BusContext *context, DBusConnection *connection, + BusClientPolicy *previous, DBusError *error); int bus_context_get_activation_timeout (BusContext *context); int bus_context_get_auth_timeout (BusContext *context); diff -Nru dbus-1.14.8/bus/connection.c dbus-1.14.10/bus/connection.c --- dbus-1.14.8/bus/connection.c 2023-06-06 13:00:36.000000000 +0000 +++ dbus-1.14.10/bus/connection.c 2023-09-01 14:23:58.000000000 +0000 @@ -1079,7 +1079,7 @@ if (dbus_connection_get_unix_user (connection, &uid)) { - if (!_dbus_unix_groups_from_uid (uid, groups, n_groups)) + if (!_dbus_unix_groups_from_uid (uid, groups, n_groups, error)) { _dbus_verbose ("Did not get any groups for UID %lu\n", uid); @@ -1584,6 +1584,7 @@ d->policy = bus_context_create_client_policy (d->connections->context, connection, + NULL, error); /* we may have a NULL policy on OOM or error getting list of @@ -1660,22 +1661,27 @@ link; link = _dbus_list_get_next_link (&(connections->completed), link)) { + BusClientPolicy *policy; + connection = link->data; d = BUS_CONNECTION_DATA (connection); _dbus_assert (d != NULL); _dbus_assert (d->policy != NULL); - bus_client_policy_unref (d->policy); - d->policy = bus_context_create_client_policy (connections->context, - connection, - error); - if (d->policy == NULL) + policy = bus_context_create_client_policy (connections->context, + connection, + d->policy, + error); + if (policy == NULL) { _dbus_verbose ("Failed to create security policy for connection %p\n", connection); _DBUS_ASSERT_ERROR_IS_SET (error); return FALSE; } + + bus_client_policy_unref (d->policy); + d->policy = policy; } return TRUE; diff -Nru dbus-1.14.8/bus/policy.c dbus-1.14.10/bus/policy.c --- dbus-1.14.8/bus/policy.c 2022-10-02 14:06:53.000000000 +0000 +++ dbus-1.14.10/bus/policy.c 2023-09-01 14:23:58.000000000 +0000 @@ -450,7 +450,7 @@ int n_group_ids; /* On OOM or error we always reject the user */ - if (!_dbus_unix_groups_from_uid (uid, &group_ids, &n_group_ids)) + if (!_dbus_unix_groups_from_uid (uid, &group_ids, &n_group_ids, NULL)) { _dbus_verbose ("Did not get any groups for UID %lu\n", uid); diff -Nru dbus-1.14.8/cmake/DBus1ConfigVersion.cmake dbus-1.14.10/cmake/DBus1ConfigVersion.cmake --- dbus-1.14.8/cmake/DBus1ConfigVersion.cmake 2023-06-06 13:02:14.000000000 +0000 +++ dbus-1.14.10/cmake/DBus1ConfigVersion.cmake 2023-09-01 14:31:38.000000000 +0000 @@ -1,4 +1,4 @@ -set(PACKAGE_VERSION 1.14.8) +set(PACKAGE_VERSION 1.14.10) # Check whether the requested PACKAGE_FIND_VERSION is compatible if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") diff -Nru dbus-1.14.8/configure dbus-1.14.10/configure --- dbus-1.14.8/configure 2023-06-06 13:01:59.000000000 +0000 +++ dbus-1.14.10/configure 2023-09-01 14:31:27.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for dbus 1.14.8. +# Generated by GNU Autoconf 2.71 for dbus 1.14.10. # # Report bugs to . # @@ -621,8 +621,8 @@ # Identity of this package. PACKAGE_NAME='dbus' PACKAGE_TARNAME='dbus' -PACKAGE_VERSION='1.14.8' -PACKAGE_STRING='dbus 1.14.8' +PACKAGE_VERSION='1.14.10' +PACKAGE_STRING='dbus 1.14.10' PACKAGE_BUGREPORT='https://gitlab.freedesktop.org/dbus/dbus/issues' PACKAGE_URL='' @@ -1614,7 +1614,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures dbus 1.14.8 to adapt to many kinds of systems. +\`configure' configures dbus 1.14.10 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1685,7 +1685,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of dbus 1.14.8:";; + short | recursive ) echo "Configuration of dbus 1.14.10:";; esac cat <<\_ACEOF @@ -1925,7 +1925,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -dbus configure 1.14.8 +dbus configure 1.14.10 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2611,7 +2611,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by dbus $as_me 1.14.8, which was +It was created by dbus $as_me 1.14.10, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -4223,7 +4223,7 @@ # Define the identity of the package. PACKAGE='dbus' - VERSION='1.14.8' + VERSION='1.14.10' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -4533,7 +4533,7 @@ ## increment any time the source changes; set to ## 0 if you increment CURRENT -LT_REVISION=3 +LT_REVISION=4 ## increment if any interfaces have been added; set to 0 ## if any interfaces have been changed or removed. removal has @@ -4548,8 +4548,8 @@ DBUS_MAJOR_VERSION=1 DBUS_MINOR_VERSION=14 -DBUS_MICRO_VERSION=8 -DBUS_VERSION=1.14.8 +DBUS_MICRO_VERSION=10 +DBUS_VERSION=1.14.10 @@ -29224,7 +29224,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by dbus $as_me 1.14.8, which was +This file was extended by dbus $as_me 1.14.10, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -29292,7 +29292,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -dbus config.status 1.14.8 +dbus config.status 1.14.10 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff -Nru dbus-1.14.8/configure.ac dbus-1.14.10/configure.ac --- dbus-1.14.8/configure.ac 2023-06-06 13:00:36.000000000 +0000 +++ dbus-1.14.10/configure.ac 2023-09-01 14:30:58.000000000 +0000 @@ -3,7 +3,7 @@ m4_define([dbus_major_version], [1]) m4_define([dbus_minor_version], [14]) -m4_define([dbus_micro_version], [8]) +m4_define([dbus_micro_version], [10]) m4_define([dbus_version], [dbus_major_version.dbus_minor_version.dbus_micro_version]) AC_INIT([dbus], [dbus_version], [https://gitlab.freedesktop.org/dbus/dbus/issues], [dbus]) @@ -42,7 +42,7 @@ ## increment any time the source changes; set to ## 0 if you increment CURRENT -LT_REVISION=3 +LT_REVISION=4 ## increment if any interfaces have been added; set to 0 ## if any interfaces have been changed or removed. removal has diff -Nru dbus-1.14.8/dbus/Makefile.in dbus-1.14.10/dbus/Makefile.in --- dbus-1.14.8/dbus/Makefile.in 2023-06-06 13:02:00.000000000 +0000 +++ dbus-1.14.10/dbus/Makefile.in 2023-09-01 14:31:28.000000000 +0000 @@ -15,7 +15,7 @@ @SET_MAKE@ # aminclude_static.am generated automatically by Autoconf -# from AX_AM_MACROS_STATIC on Tue Jun 6 14:01:59 BST 2023 +# from AX_AM_MACROS_STATIC on Fri Sep 1 15:31:27 BST 2023 diff -Nru dbus-1.14.8/dbus/dbus-sysdeps-unix.c dbus-1.14.10/dbus/dbus-sysdeps-unix.c --- dbus-1.14.8/dbus/dbus-sysdeps-unix.c 2023-02-08 10:30:57.000000000 +0000 +++ dbus-1.14.10/dbus/dbus-sysdeps-unix.c 2023-08-16 10:29:50.000000000 +0000 @@ -1932,6 +1932,8 @@ { #if defined(__linux__) && defined(SO_PEERGROUPS) _DBUS_STATIC_ASSERT (sizeof (gid_t) <= sizeof (dbus_gid_t)); + /* This function assumes socklen_t is unsigned, which is true on Linux */ + _DBUS_STATIC_ASSERT (((socklen_t) -1) > 0); gid_t *buf = NULL; socklen_t len = 1024; dbus_bool_t oom = FALSE; @@ -1977,13 +1979,6 @@ _dbus_verbose ("will try again with %lu\n", (unsigned long) len); } - if (len <= 0) - { - _dbus_verbose ("getsockopt(SO_PEERGROUPS) yielded <= 0 bytes: %ld\n", - (long) len); - goto out; - } - if (len > n_gids * sizeof (gid_t)) { _dbus_verbose ("%lu > %zu", (unsigned long) len, n_gids * sizeof (gid_t)); diff -Nru dbus-1.14.8/dbus/dbus-sysdeps-util-unix.c dbus-1.14.10/dbus/dbus-sysdeps-util-unix.c --- dbus-1.14.8/dbus/dbus-sysdeps-util-unix.c 2022-10-02 14:06:53.000000000 +0000 +++ dbus-1.14.10/dbus/dbus-sysdeps-util-unix.c 2023-09-01 14:23:58.000000000 +0000 @@ -992,14 +992,16 @@ * @param uid the UID * @param group_ids return location for array of group IDs * @param n_group_ids return location for length of returned array + * @param error error location * @returns #TRUE if the UID existed and we got some credentials */ dbus_bool_t _dbus_unix_groups_from_uid (dbus_uid_t uid, dbus_gid_t **group_ids, - int *n_group_ids) + int *n_group_ids, + DBusError *error) { - return _dbus_groups_from_uid (uid, group_ids, n_group_ids); + return _dbus_groups_from_uid (uid, group_ids, n_group_ids, error); } /** diff -Nru dbus-1.14.8/dbus/dbus-sysdeps-util-win.c dbus-1.14.10/dbus/dbus-sysdeps-util-win.c --- dbus-1.14.8/dbus/dbus-sysdeps-util-win.c 2022-10-02 14:06:53.000000000 +0000 +++ dbus-1.14.10/dbus/dbus-sysdeps-util-win.c 2023-09-01 14:23:58.000000000 +0000 @@ -649,6 +649,13 @@ unix emulation functions - should be removed sometime in the future =====================================================================*/ +static void +set_unix_uid_unsupported (DBusError *error) +{ + dbus_set_error (error, DBUS_ERROR_NOT_SUPPORTED, + "UNIX user IDs not supported on Windows"); +} + /** * Checks to see if the UNIX user ID is at the console. * Should always fail on Windows (set the error to @@ -662,8 +669,7 @@ _dbus_unix_user_is_at_console (dbus_uid_t uid, DBusError *error) { - dbus_set_error (error, DBUS_ERROR_NOT_SUPPORTED, - "UNIX user IDs not supported on Windows\n"); + set_unix_uid_unsupported (error); return FALSE; } @@ -707,13 +713,16 @@ * @param uid the UID * @param group_ids return location for array of group IDs * @param n_group_ids return location for length of returned array + * @param error error location * @returns #TRUE if the UID existed and we got some credentials */ dbus_bool_t _dbus_unix_groups_from_uid (dbus_uid_t uid, dbus_gid_t **group_ids, - int *n_group_ids) + int *n_group_ids, + DBusError *error) { + set_unix_uid_unsupported (error); return FALSE; } diff -Nru dbus-1.14.8/dbus/dbus-sysdeps.h dbus-1.14.10/dbus/dbus-sysdeps.h --- dbus-1.14.8/dbus/dbus-sysdeps.h 2022-10-02 14:06:53.000000000 +0000 +++ dbus-1.14.10/dbus/dbus-sysdeps.h 2023-09-01 14:23:58.000000000 +0000 @@ -298,7 +298,8 @@ dbus_gid_t *gid_p); dbus_bool_t _dbus_unix_groups_from_uid (dbus_uid_t uid, dbus_gid_t **group_ids, - int *n_group_ids); + int *n_group_ids, + DBusError *error); dbus_bool_t _dbus_unix_user_is_at_console (dbus_uid_t uid, DBusError *error); dbus_bool_t _dbus_unix_user_is_process_owner (dbus_uid_t uid); diff -Nru dbus-1.14.8/dbus/dbus-userdb-util.c dbus-1.14.10/dbus/dbus-userdb-util.c --- dbus-1.14.8/dbus/dbus-userdb-util.c 2022-10-02 14:06:53.000000000 +0000 +++ dbus-1.14.10/dbus/dbus-userdb-util.c 2023-09-01 14:23:58.000000000 +0000 @@ -373,31 +373,35 @@ * @param uid the UID * @param group_ids return location for array of group IDs * @param n_group_ids return location for length of returned array + * @param error error to fill in on failure * @returns #TRUE if the UID existed and we got some credentials */ dbus_bool_t _dbus_groups_from_uid (dbus_uid_t uid, dbus_gid_t **group_ids, - int *n_group_ids) + int *n_group_ids, + DBusError *error) { DBusUserDatabase *db; const DBusUserInfo *info; *group_ids = NULL; *n_group_ids = 0; - /* FIXME: this can't distinguish ENOMEM from other errors */ if (!_dbus_user_database_lock_system ()) - return FALSE; + { + _DBUS_SET_OOM (error); + return FALSE; + } db = _dbus_user_database_get_system (); if (db == NULL) { + _DBUS_SET_OOM (error); _dbus_user_database_unlock_system (); return FALSE; } - if (!_dbus_user_database_get_uid (db, uid, - &info, NULL)) + if (!_dbus_user_database_get_uid (db, uid, &info, error)) { _dbus_user_database_unlock_system (); return FALSE; @@ -410,6 +414,7 @@ *group_ids = dbus_new (dbus_gid_t, info->n_group_ids); if (*group_ids == NULL) { + _DBUS_SET_OOM (error); _dbus_user_database_unlock_system (); return FALSE; } diff -Nru dbus-1.14.8/dbus/dbus-userdb.h dbus-1.14.10/dbus/dbus-userdb.h --- dbus-1.14.8/dbus/dbus-userdb.h 2022-10-02 14:06:53.000000000 +0000 +++ dbus-1.14.10/dbus/dbus-userdb.h 2023-09-01 14:23:58.000000000 +0000 @@ -100,7 +100,8 @@ dbus_gid_t *gid_p); dbus_bool_t _dbus_groups_from_uid (dbus_uid_t uid, dbus_gid_t **group_ids, - int *n_group_ids); + int *n_group_ids, + DBusError *error); DBUS_PRIVATE_EXPORT dbus_bool_t _dbus_is_console_user (dbus_uid_t uid, DBusError *error); diff -Nru dbus-1.14.8/debian/20dbus_xdg-runtime dbus-1.14.10/debian/20dbus_xdg-runtime --- dbus-1.14.8/debian/20dbus_xdg-runtime 2023-07-11 19:59:33.000000000 +0000 +++ dbus-1.14.10/debian/20dbus_xdg-runtime 2023-09-16 10:03:58.000000000 +0000 @@ -20,5 +20,9 @@ # to put a minimal subset of the Xsession's environment in activated # services' environments dbus-update-activation-environment --verbose --systemd \ - DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY + DBUS_SESSION_BUS_ADDRESS \ + DISPLAY \ + XAUTHORITY \ + XDG_CURRENT_DESKTOP \ + ${NULL+} fi diff -Nru dbus-1.14.8/debian/changelog dbus-1.14.10/debian/changelog --- dbus-1.14.8/debian/changelog 2023-07-11 19:59:33.000000000 +0000 +++ dbus-1.14.10/debian/changelog 2023-09-16 10:03:58.000000000 +0000 @@ -1,3 +1,29 @@ +dbus (1.14.10-1~deb12u1) bookworm; urgency=medium + + * Rebuild for bookworm + + -- Simon McVittie Sat, 16 Sep 2023 11:03:58 +0100 + +dbus (1.14.10-1) unstable; urgency=medium + + * New upstream stable release + - Fix a dbus-daemon crash during policy reload if a connection belongs + to a user account that has been deleted, or if a Name Service Switch + plugin is broken, on kernels not supporting SO_PEERGROUPS + - Report the error correctly if getting the groups of a uid fails + - If a connection has a primary group ID but no supplementary groups, + report the primary group ID in GetConnectionCredentials() + UnixGroupIDs field + * dbus-user-session: Copy XDG_CURRENT_DESKTOP to activation environment. + Previously this was only done if dbus-x11 was installed. + This is needed by various freedesktop.org specifications, in particular + for xdg-desktop-portal (>= 1.17) to choose the correct portal backend + for a desktop session. Some session managers like gnome-session and + plasma-workspace already upload this into the activation environment, + but many older or simpler session managers do not. + + -- Simon McVittie Fri, 01 Sep 2023 15:41:38 +0100 + dbus (1.14.8-2~deb12u1) bookworm; urgency=medium * Rebuild for bookworm diff -Nru dbus-1.14.8/test/CMakeLists.txt dbus-1.14.10/test/CMakeLists.txt --- dbus-1.14.8/test/CMakeLists.txt 2023-02-08 12:04:02.000000000 +0000 +++ dbus-1.14.10/test/CMakeLists.txt 2023-09-01 14:23:58.000000000 +0000 @@ -201,6 +201,7 @@ add_test_executable(test-sysdeps internals/sysdeps.c ${TEST_LIBRARIES}) add_test_executable(test-syslog internals/syslog.c ${TEST_LIBRARIES}) add_test_executable(test-uid-permissions uid-permissions.c ${TEST_LIBRARIES}) + add_test_executable(test-userdb internals/userdb.c ${TEST_LIBRARIES}) add_helper_executable(manual-authz manual-authz.c ${TEST_LIBRARIES}) add_helper_executable(manual-test-thread-blocking thread-blocking.c ${TEST_LIBRARIES}) endif() diff -Nru dbus-1.14.8/test/Makefile.am dbus-1.14.10/test/Makefile.am --- dbus-1.14.8/test/Makefile.am 2023-02-08 12:04:02.000000000 +0000 +++ dbus-1.14.10/test/Makefile.am 2023-09-01 14:23:58.000000000 +0000 @@ -171,6 +171,9 @@ test_syslog_SOURCES = internals/syslog.c test_syslog_LDADD = libdbus-testutils.la $(GLIB_LIBS) +test_userdb_SOURCES = internals/userdb.c +test_userdb_LDADD = libdbus-testutils.la $(GLIB_LIBS) + test_variant_SOURCES = internals/variant.c test_variant_LDADD = libdbus-testutils.la $(GLIB_LIBS) @@ -316,6 +319,7 @@ test-sysdeps \ test-syslog \ test-uid-permissions \ + test-userdb \ test-variant \ $(NULL) diff -Nru dbus-1.14.8/test/Makefile.in dbus-1.14.10/test/Makefile.in --- dbus-1.14.8/test/Makefile.in 2023-06-06 13:02:00.000000000 +0000 +++ dbus-1.14.10/test/Makefile.in 2023-09-01 14:31:28.000000000 +0000 @@ -15,7 +15,7 @@ @SET_MAKE@ # aminclude_static.am generated automatically by Autoconf -# from AX_AM_MACROS_STATIC on Tue Jun 6 14:01:59 BST 2023 +# from AX_AM_MACROS_STATIC on Fri Sep 1 15:31:27 BST 2023 @@ -131,6 +131,7 @@ @DBUS_WITH_GLIB_TRUE@ test-sysdeps \ @DBUS_WITH_GLIB_TRUE@ test-syslog \ @DBUS_WITH_GLIB_TRUE@ test-uid-permissions \ +@DBUS_WITH_GLIB_TRUE@ test-userdb \ @DBUS_WITH_GLIB_TRUE@ test-variant \ @DBUS_WITH_GLIB_TRUE@ $(NULL) @@ -235,6 +236,7 @@ @DBUS_WITH_GLIB_TRUE@ test-sysdeps$(EXEEXT) \ @DBUS_WITH_GLIB_TRUE@ test-syslog$(EXEEXT) \ @DBUS_WITH_GLIB_TRUE@ test-uid-permissions$(EXEEXT) \ +@DBUS_WITH_GLIB_TRUE@ test-userdb$(EXEEXT) \ @DBUS_WITH_GLIB_TRUE@ test-variant$(EXEEXT) @DBUS_UNIX_TRUE@@DBUS_WITH_GLIB_TRUE@am__EXEEXT_7 = \ @DBUS_UNIX_TRUE@@DBUS_WITH_GLIB_TRUE@ test-containers$(EXEEXT) \ @@ -509,6 +511,9 @@ test_uid_permissions_OBJECTS = $(am_test_uid_permissions_OBJECTS) test_uid_permissions_DEPENDENCIES = libdbus-testutils.la \ $(am__DEPENDENCIES_1) +am_test_userdb_OBJECTS = internals/userdb.$(OBJEXT) +test_userdb_OBJECTS = $(am_test_userdb_OBJECTS) +test_userdb_DEPENDENCIES = libdbus-testutils.la $(am__DEPENDENCIES_1) am_test_variant_OBJECTS = internals/variant.$(OBJEXT) test_variant_OBJECTS = $(am_test_variant_OBJECTS) test_variant_DEPENDENCIES = libdbus-testutils.la $(am__DEPENDENCIES_1) @@ -605,7 +610,8 @@ internals/$(DEPDIR)/server-oom.Po internals/$(DEPDIR)/sha.Po \ internals/$(DEPDIR)/spawn-oom.Po \ internals/$(DEPDIR)/strings.Po internals/$(DEPDIR)/sysdeps.Po \ - internals/$(DEPDIR)/syslog.Po internals/$(DEPDIR)/variant.Po + internals/$(DEPDIR)/syslog.Po internals/$(DEPDIR)/userdb.Po \ + internals/$(DEPDIR)/variant.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -653,7 +659,7 @@ $(test_spawn_oom_SOURCES) $(test_strings_SOURCES) \ $(test_syntax_SOURCES) $(test_sysdeps_SOURCES) \ $(test_syslog_SOURCES) $(test_uid_permissions_SOURCES) \ - $(test_variant_SOURCES) + $(test_userdb_SOURCES) $(test_variant_SOURCES) DIST_SOURCES = $(am__libdbus_testutils_la_SOURCES_DIST) \ $(dbus_daemon_launch_helper_for_tests_SOURCES) \ $(manual_authz_SOURCES) $(manual_backtrace_SOURCES) \ @@ -683,7 +689,7 @@ $(am__test_spawn_oom_SOURCES_DIST) $(test_strings_SOURCES) \ $(test_syntax_SOURCES) $(test_sysdeps_SOURCES) \ $(test_syslog_SOURCES) $(test_uid_permissions_SOURCES) \ - $(test_variant_SOURCES) + $(test_userdb_SOURCES) $(test_variant_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ @@ -1272,6 +1278,8 @@ test_sysdeps_LDADD = libdbus-testutils.la $(GLIB_LIBS) test_syslog_SOURCES = internals/syslog.c test_syslog_LDADD = libdbus-testutils.la $(GLIB_LIBS) +test_userdb_SOURCES = internals/userdb.c +test_userdb_LDADD = libdbus-testutils.la $(GLIB_LIBS) test_variant_SOURCES = internals/variant.c test_variant_LDADD = libdbus-testutils.la $(GLIB_LIBS) manual_backtrace_SOURCES = manual-backtrace.c @@ -2126,6 +2134,12 @@ test-uid-permissions$(EXEEXT): $(test_uid_permissions_OBJECTS) $(test_uid_permissions_DEPENDENCIES) $(EXTRA_test_uid_permissions_DEPENDENCIES) @rm -f test-uid-permissions$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_uid_permissions_OBJECTS) $(test_uid_permissions_LDADD) $(LIBS) +internals/userdb.$(OBJEXT): internals/$(am__dirstamp) \ + internals/$(DEPDIR)/$(am__dirstamp) + +test-userdb$(EXEEXT): $(test_userdb_OBJECTS) $(test_userdb_DEPENDENCIES) $(EXTRA_test_userdb_DEPENDENCIES) + @rm -f test-userdb$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_userdb_OBJECTS) $(test_userdb_LDADD) $(LIBS) internals/variant.$(OBJEXT): internals/$(am__dirstamp) \ internals/$(DEPDIR)/$(am__dirstamp) @@ -2251,6 +2265,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@internals/$(DEPDIR)/strings.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@internals/$(DEPDIR)/sysdeps.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@internals/$(DEPDIR)/syslog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@internals/$(DEPDIR)/userdb.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@internals/$(DEPDIR)/variant.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @@ -2819,6 +2834,13 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-userdb.log: test-userdb$(EXEEXT) + @p='test-userdb$(EXEEXT)'; \ + b='test-userdb'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-variant.log: test-variant$(EXEEXT) @p='test-variant$(EXEEXT)'; \ b='test-variant'; \ @@ -3042,6 +3064,7 @@ -rm -f internals/$(DEPDIR)/strings.Po -rm -f internals/$(DEPDIR)/sysdeps.Po -rm -f internals/$(DEPDIR)/syslog.Po + -rm -f internals/$(DEPDIR)/userdb.Po -rm -f internals/$(DEPDIR)/variant.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ @@ -3157,6 +3180,7 @@ -rm -f internals/$(DEPDIR)/strings.Po -rm -f internals/$(DEPDIR)/sysdeps.Po -rm -f internals/$(DEPDIR)/syslog.Po + -rm -f internals/$(DEPDIR)/userdb.Po -rm -f internals/$(DEPDIR)/variant.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic diff -Nru dbus-1.14.8/test/internals/misc-internals.c dbus-1.14.10/test/internals/misc-internals.c --- dbus-1.14.8/test/internals/misc-internals.c 2022-10-02 14:06:53.000000000 +0000 +++ dbus-1.14.10/test/internals/misc-internals.c 2023-09-01 14:23:58.000000000 +0000 @@ -935,7 +935,7 @@ dbus_uid_t uid; unsigned long *group_ids; int n_group_ids, i; - DBusError error; + DBusError error = DBUS_ERROR_INIT; if (!_dbus_username_from_current_process (&username)) _dbus_test_fatal ("didn't get username"); @@ -946,8 +946,8 @@ if (!_dbus_get_user_id (username, &uid)) _dbus_test_fatal ("didn't get uid"); - if (!_dbus_groups_from_uid (uid, &group_ids, &n_group_ids)) - _dbus_test_fatal ("didn't get groups"); + if (!_dbus_groups_from_uid (uid, &group_ids, &n_group_ids, &error)) + _dbus_test_fatal ("didn't get groups: %s: %s", error.name, error.message); _dbus_test_diag (" Current user: %s homedir: %s gids:", _dbus_string_get_const_data (username), diff -Nru dbus-1.14.8/test/internals/userdb.c dbus-1.14.10/test/internals/userdb.c --- dbus-1.14.8/test/internals/userdb.c 1970-01-01 00:00:00.000000000 +0000 +++ dbus-1.14.10/test/internals/userdb.c 2023-09-01 14:23:58.000000000 +0000 @@ -0,0 +1,143 @@ +/* + * Copyright © 2023 Collabora Ltd. + * SPDX-License-Identifier: MIT + */ + +#include + +#include + +#include +#include "dbus/dbus-sysdeps.h" +#include "test-utils-glib.h" + +#ifdef DBUS_UNIX +#include +#include +#include +#include + +#include "dbus/dbus-sysdeps-unix.h" +#include "dbus/dbus-userdb.h" +#endif + +typedef struct +{ + int dummy; +} Fixture; + +static void +setup (Fixture *f G_GNUC_UNUSED, + gconstpointer context G_GNUC_UNUSED) +{ +} + +static void +test_groups_from_uid (Fixture *f, + gconstpointer context G_GNUC_UNUSED) +{ + DBusError error = DBUS_ERROR_INIT; + dbus_gid_t *gids = NULL; + int n_gids = -1; + dbus_bool_t ret; +#ifdef DBUS_UNIX + int i; +#endif + + /* We assume that uid 0 (root) is available on all Unix systems, + * so this should succeed */ + ret = _dbus_unix_groups_from_uid (0, &gids, &n_gids, &error); + +#ifdef DBUS_UNIX + test_assert_no_error (&error); + g_assert_true (ret); + g_assert_cmpint (n_gids, >=, 0); + + g_test_message ("Groups of uid 0:"); + + for (i = 0; i < n_gids; i++) + { + g_test_message ("[%d]: %ld", i, (long) gids[i]); + g_assert_cmpint (gids[i], >=, 0); + } +#else + g_assert_cmpstr (error.name, ==, DBUS_ERROR_NOT_SUPPORTED); + g_assert_false (ret); + g_test_message ("Getting Unix groups on Windows failed as expected: %s: %s", + error.name, error.message); + g_assert_null (gids); + g_assert_cmpint (n_gids, <=, 0); +#endif + + dbus_free (gids); + dbus_error_free (&error); + +#ifdef DBUS_UNIX + /* Assume that the current uid is something sensible */ + ret = _dbus_unix_groups_from_uid (geteuid (), &gids, &n_gids, &error); + test_assert_no_error (&error); + g_assert_true (ret); + g_assert_cmpint (n_gids, >=, 0); + + g_test_message ("Groups of uid %ld:", (long) geteuid ()); + + for (i = 0; i < n_gids; i++) + { + g_test_message ("[%d]: %ld", i, (long) gids[i]); + g_assert_cmpint (gids[i], >=, 0); + } + + g_test_message ("Total: %i groups", n_gids); + + dbus_free (gids); + dbus_error_free (&error); + + errno = 0; + + /* arbitrarily chosen, probably isn't a valid uid */ + if (getpwuid (31337) == NULL) + { + g_test_message ("uid 31337 doesn't exist: %s", + errno == 0 ? "(no errno)" : g_strerror (errno)); + ret = _dbus_unix_groups_from_uid (31337, &gids, &n_gids, &error); + g_assert_nonnull (error.name); + g_assert_nonnull (error.message); + g_assert_false (ret); + g_test_message ("Getting groups from non-uid failed as expected: %s: %s", + error.name, error.message); + /* The Unix implementation always clears gids/n_gids, + * even on failure, and even if they were uninitialized */ + g_assert_null (gids); + g_assert_cmpint (n_gids, ==, 0); + + dbus_free (gids); + dbus_error_free (&error); + } + else + { + g_test_skip ("against our expectations, uid 31337 exists on this system"); + } +#endif +} + +static void +teardown (Fixture *f G_GNUC_UNUSED, + gconstpointer context G_GNUC_UNUSED) +{ +} + +int +main (int argc, + char **argv) +{ + int ret; + + test_init (&argc, &argv); + + g_test_add ("/userdb/groups_from_uid", + Fixture, NULL, setup, test_groups_from_uid, teardown); + + ret = g_test_run (); + dbus_shutdown (); + return ret; +}