4 int bus_message_read_secret(sd_bus_message
*m
, UserRecord
**ret
, sd_bus_error
*error
) {
5 _cleanup_(json_variant_unrefp
) JsonVariant
*v
= NULL
, *full
= NULL
;
6 _cleanup_(user_record_unrefp
) UserRecord
*hr
= NULL
;
7 unsigned line
= 0, column
= 0;
13 r
= sd_bus_message_read(m
, "s", &json
);
17 r
= json_parse(json
, JSON_PARSE_SENSITIVE
, &v
, &line
, &column
);
19 return sd_bus_error_setf(error
, SD_BUS_ERROR_INVALID_ARGS
, "Failed to parse JSON secret record at %u:%u: %m", line
, column
);
21 r
= json_build(&full
, JSON_BUILD_OBJECT(JSON_BUILD_PAIR("secret", JSON_BUILD_VARIANT(v
))));
25 hr
= user_record_new();
29 r
= user_record_load(hr
, full
, USER_RECORD_REQUIRE_SECRET
);
37 int bus_message_read_home_record(sd_bus_message
*m
, UserRecordLoadFlags flags
, UserRecord
**ret
, sd_bus_error
*error
) {
38 _cleanup_(json_variant_unrefp
) JsonVariant
*v
= NULL
;
39 _cleanup_(user_record_unrefp
) UserRecord
*hr
= NULL
;
40 unsigned line
= 0, column
= 0;
46 r
= sd_bus_message_read(m
, "s", &json
);
50 r
= json_parse(json
, JSON_PARSE_SENSITIVE
, &v
, &line
, &column
);
52 return sd_bus_error_setf(error
, SD_BUS_ERROR_INVALID_ARGS
, "Failed to parse JSON identity record at %u:%u: %m", line
, column
);
54 hr
= user_record_new();
58 r
= user_record_load(hr
, v
, flags
);
60 return sd_bus_error_setf(error
, SD_BUS_ERROR_INVALID_ARGS
, "JSON data is not a valid identity record");