From: Simon McVittie Date: Tue, 10 Dec 2024 14:31:59 +0000 (+0000) Subject: tests: Exercise NSS group lookup before running tests X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7cbb7b75dd2803fcb0c6edb18d5c43e4eaeee704;p=thirdparty%2Fdbus.git 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 --- diff --git a/test/test-utils.c b/test/test-utils.c index 17febc8b1..05df7b955 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"); }