From 7cbb7b75dd2803fcb0c6edb18d5c43e4eaeee704 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Tue, 10 Dec 2024 14:31:59 +0000 Subject: [PATCH] tests: Exercise NSS group lookup before running tests Similar to #256, NSS plugins might open file descriptors the first time they look up a system group, and leave them open. To avoid detecting this as a leak, do one group lookup (which we expect to fail) before starting testing, so that the fd is already open the first time we call _dbus_check_fdleaks_enter(), and therefore is not considered to have been leaked in _dbus_check_fdleaks_leave(). Resolves: https://gitlab.freedesktop.org/dbus/dbus/-/issues/540 Signed-off-by: Simon McVittie --- test/test-utils.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/test/test-utils.c b/test/test-utils.c index 17febc8b..05df7b95 100644 --- a/test/test-utils.c +++ b/test/test-utils.c @@ -788,14 +788,20 @@ _dbus_test_main (int argc, * show up as having been "leaked" by the first module of code under * test that happens to do a NSS lookup. */ { - DBusString username; + DBusString lookup; dbus_uid_t ignored_uid = DBUS_UID_UNSET; + dbus_gid_t ignored_gid = DBUS_GID_UNSET; - _dbus_string_init_const (&username, "dbus-no-user-with-this-name"); + _dbus_string_init_const (&lookup, "dbus-no-user-with-this-name"); /* We use a username that almost certainly doesn't exist, because * if we used something like root it might get handled early in the * NSS search order, before we get as far as asking sssd or LDAP. */ - _dbus_parse_unix_user_from_config (&username, &ignored_uid); + _dbus_parse_unix_user_from_config (&lookup, &ignored_uid); + + /* Same for groups */ + _dbus_string_init_const (&lookup, "dbus-no-group-with-this-name"); + _dbus_parse_unix_group_from_config (&lookup, &ignored_gid); + _dbus_test_check_memleaks ("initial nss query"); }