summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2023-03-28 13:39:08 +0900
committerGitHub <noreply@github.com>2023-03-28 13:39:08 +0900
commit1d4f517bbadb0670c9751d6eb020ab06d1044933 (patch)
tree41b6d20152fa0338792f4b1ef0b1ba15ec80d345
parent024ea9de1d17b2ec690d0345201d5bfb67c8a052 (diff)
parent13c2d0b15fdfa87c480a11e05f16909ef6b80007 (diff)
downloadsystemd-1d4f517bbadb0670c9751d6eb020ab06d1044933.tar.gz
Merge pull request #26993 from mrc0mmand/TEST-46-tweaks
test: explicitly pull in systemd-userdbd.service
-rw-r--r--src/shared/userdb.c38
-rw-r--r--test/units/testsuite-46.service4
2 files changed, 18 insertions, 24 deletions
diff --git a/src/shared/userdb.c b/src/shared/userdb.c
index a77eff4407..a7896297ae 100644
--- a/src/shared/userdb.c
+++ b/src/shared/userdb.c
@@ -142,10 +142,20 @@ struct user_group_data {
bool incomplete;
};
-static void user_group_data_release(struct user_group_data *d) {
+static void user_group_data_done(struct user_group_data *d) {
json_variant_unref(d->record);
}
+struct membership_data {
+ char *user_name;
+ char *group_name;
+};
+
+static void membership_data_done(struct membership_data *d) {
+ free(d->user_name);
+ free(d->group_name);
+}
+
static int userdb_on_query_reply(
Varlink *link,
JsonVariant *parameters,
@@ -178,7 +188,7 @@ static int userdb_on_query_reply(
switch (iterator->what) {
case LOOKUP_USER: {
- _cleanup_(user_group_data_release) struct user_group_data user_data = {};
+ _cleanup_(user_group_data_done) struct user_group_data user_data = {};
static const JsonDispatch dispatch_table[] = {
{ "record", _JSON_VARIANT_TYPE_INVALID, json_dispatch_variant, offsetof(struct user_group_data, record), 0 },
@@ -235,7 +245,7 @@ static int userdb_on_query_reply(
}
case LOOKUP_GROUP: {
- _cleanup_(user_group_data_release) struct user_group_data group_data = {};
+ _cleanup_(user_group_data_done) struct user_group_data group_data = {};
static const JsonDispatch dispatch_table[] = {
{ "record", _JSON_VARIANT_TYPE_INVALID, json_dispatch_variant, offsetof(struct user_group_data, record), 0 },
@@ -288,10 +298,7 @@ static int userdb_on_query_reply(
}
case LOOKUP_MEMBERSHIP: {
- struct membership_data {
- const char *user_name;
- const char *group_name;
- } membership_data = {};
+ _cleanup_(membership_data_done) struct membership_data membership_data = {};
static const JsonDispatch dispatch_table[] = {
{ "userName", JSON_VARIANT_STRING, json_dispatch_user_group_name, offsetof(struct membership_data, user_name), JSON_RELAX },
@@ -306,21 +313,8 @@ static int userdb_on_query_reply(
if (r < 0)
goto finish;
- iterator->found_user_name = mfree(iterator->found_user_name);
- iterator->found_group_name = mfree(iterator->found_group_name);
-
- iterator->found_user_name = strdup(membership_data.user_name);
- if (!iterator->found_user_name) {
- r = -ENOMEM;
- goto finish;
- }
-
- iterator->found_group_name = strdup(membership_data.group_name);
- if (!iterator->found_group_name) {
- r = -ENOMEM;
- goto finish;
- }
-
+ iterator->found_user_name = TAKE_PTR(membership_data.user_name);
+ iterator->found_group_name = TAKE_PTR(membership_data.group_name);
iterator->n_found++;
if (FLAGS_SET(flags, VARLINK_REPLY_CONTINUES))
diff --git a/test/units/testsuite-46.service b/test/units/testsuite-46.service
index 26b3350b51..5efb9cc383 100644
--- a/test/units/testsuite-46.service
+++ b/test/units/testsuite-46.service
@@ -3,8 +3,8 @@
Description=TEST-46-HOMED
Wants=getty-pre.target
Before=getty-pre.target
-Wants=systemd-homed.service
-After=systemd-homed.service
+Requires=systemd-homed.service systemd-userdbd.socket
+After=systemd-homed.service systemd-userdbd.socket
[Service]
ExecStartPre=rm -f /failed /testok