]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
userwork: make sure to return correct errors when service is not specified correctly
authorLennart Poettering <lennart@poettering.net>
Mon, 8 Nov 2021 16:57:42 +0000 (17:57 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 8 Nov 2021 20:42:53 +0000 (21:42 +0100)
Fixes: #21215 #21222
src/userdb/userwork.c

index 63ce7eafe8d3160cdabff06c34889cd2a975835c..1b1a4835e648e22db375c4fec62e92f09f81b20f 100644 (file)
@@ -114,7 +114,6 @@ static int build_user_json(Varlink *link, UserRecord *ur, JsonVariant **ret) {
 
 static int userdb_flags_from_service(Varlink *link, const char *service, UserDBFlags *ret) {
         assert(link);
-        assert(service);
         assert(ret);
 
         if (streq_ptr(service, "io.systemd.NameServiceSwitch"))
@@ -153,7 +152,8 @@ static int vl_method_get_user_record(Varlink *link, JsonVariant *parameters, Var
                 return r;
 
         r = userdb_flags_from_service(link, p.service, &userdb_flags);
-        if (r < 0)
+        if (r != 0) /* return value of < 0 means error (as usual); > 0 means 'already processed and replied,
+                     * we are done'; == 0 means 'not processed, caller should process now' */
                 return r;
 
         if (uid_is_valid(p.uid))
@@ -288,7 +288,7 @@ static int vl_method_get_group_record(Varlink *link, JsonVariant *parameters, Va
                 return r;
 
         r = userdb_flags_from_service(link, p.service, &userdb_flags);
-        if (r < 0)
+        if (r != 0)
                 return r;
 
         if (gid_is_valid(p.gid))
@@ -371,7 +371,7 @@ static int vl_method_get_memberships(Varlink *link, JsonVariant *parameters, Var
                 return r;
 
         r = userdb_flags_from_service(link, p.service, &userdb_flags);
-        if (r < 0)
+        if (r != 0)
                 return r;
 
         if (p.group_name)