]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
user-record: optionally, allow parsing empty user record JSON objects
authorLennart Poettering <lennart@poettering.net>
Wed, 5 May 2021 08:45:48 +0000 (10:45 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 19 May 2021 15:33:25 +0000 (17:33 +0200)
src/shared/user-record.c
src/shared/user-record.h

index bc35edd72928f833fac71196abc6ad81d700518b..d82b4d36361efcee057a444a7473469eeb503ea1 100644 (file)
@@ -1552,7 +1552,7 @@ int user_group_record_mangle(
         if (FLAGS_SET(load_flags, USER_RECORD_REQUIRE_REGULAR) && !FLAGS_SET(m, USER_RECORD_REGULAR))
                 return json_log(v, json_flags, SYNTHETIC_ERRNO(EBADMSG), "Record lacks basic identity fields, which are required.");
 
-        if (m == 0)
+        if (!FLAGS_SET(load_flags, USER_RECORD_EMPTY_OK) && m == 0)
                 return json_log(v, json_flags, SYNTHETIC_ERRNO(EBADMSG), "Record is empty.");
 
         if (w)
index 623f7bc9e45fa1ed4f8391e9e41d5e2e56e88704..66dceecfdddaf151c891f92904d0f2f2943e2d95 100644 (file)
@@ -169,6 +169,9 @@ typedef enum UserRecordLoadFlags {
 
         /* Whether to ignore errors and load what we can */
         USER_RECORD_PERMISSIVE          = 1U << 29,
+
+        /* Whether an empty record is OK */
+        USER_RECORD_EMPTY_OK            = 1U << 30,
 } UserRecordLoadFlags;
 
 static inline UserRecordLoadFlags USER_RECORD_REQUIRE(UserRecordMask m) {