tree-wide: port over to new builder apis
This commit is contained in:
+32
-34
@@ -1539,11 +1539,10 @@ static int json_addon(
|
||||
assert(addon);
|
||||
assert(addon_str);
|
||||
|
||||
r = sd_json_variant_append_arrayb(
|
||||
r = sd_json_variant_append_arraybo(
|
||||
array,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR(addon_str, SD_JSON_BUILD_STRING(addon->location)),
|
||||
SD_JSON_BUILD_PAIR("options", SD_JSON_BUILD_STRING(addon->cmdline))));
|
||||
SD_JSON_BUILD_PAIR(addon_str, SD_JSON_BUILD_STRING(addon->location)),
|
||||
SD_JSON_BUILD_PAIR("options", SD_JSON_BUILD_STRING(addon->cmdline)));
|
||||
if (r < 0)
|
||||
return log_oom();
|
||||
|
||||
@@ -1584,10 +1583,10 @@ static int json_cmdline(
|
||||
return log_oom();
|
||||
}
|
||||
|
||||
r = sd_json_variant_merge_objectb(
|
||||
v, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("addons", SD_JSON_BUILD_VARIANT(addons_array)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!combined_cmdline, "cmdline", SD_JSON_BUILD_STRING(combined_cmdline))));
|
||||
r = sd_json_variant_merge_objectbo(
|
||||
v,
|
||||
SD_JSON_BUILD_PAIR("addons", SD_JSON_BUILD_VARIANT(addons_array)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!combined_cmdline, "cmdline", SD_JSON_BUILD_STRING(combined_cmdline)));
|
||||
if (r < 0)
|
||||
return log_oom();
|
||||
return 0;
|
||||
@@ -1717,38 +1716,37 @@ int boot_entry_to_json(const BootConfig *c, size_t i, sd_json_variant **ret) {
|
||||
return log_oom();
|
||||
}
|
||||
|
||||
r = sd_json_variant_merge_objectb(
|
||||
&v, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("type", SD_JSON_BUILD_STRING(boot_entry_type_json_to_string(e->type))),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->id, "id", SD_JSON_BUILD_STRING(e->id)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->path, "path", SD_JSON_BUILD_STRING(e->path)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->root, "root", SD_JSON_BUILD_STRING(e->root)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->title, "title", SD_JSON_BUILD_STRING(e->title)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!boot_entry_title(e), "showTitle", SD_JSON_BUILD_STRING(boot_entry_title(e))),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->sort_key, "sortKey", SD_JSON_BUILD_STRING(e->sort_key)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->version, "version", SD_JSON_BUILD_STRING(e->version)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->machine_id, "machineId", SD_JSON_BUILD_STRING(e->machine_id)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->architecture, "architecture", SD_JSON_BUILD_STRING(e->architecture)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!opts, "options", SD_JSON_BUILD_STRING(opts)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->kernel, "linux", SD_JSON_BUILD_STRING(e->kernel)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->efi, "efi", SD_JSON_BUILD_STRING(e->efi)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!strv_isempty(e->initrd), "initrd", SD_JSON_BUILD_STRV(e->initrd)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->device_tree, "devicetree", SD_JSON_BUILD_STRING(e->device_tree)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!strv_isempty(e->device_tree_overlay), "devicetreeOverlay", SD_JSON_BUILD_STRV(e->device_tree_overlay))));
|
||||
r = sd_json_variant_merge_objectbo(
|
||||
&v,
|
||||
SD_JSON_BUILD_PAIR("type", SD_JSON_BUILD_STRING(boot_entry_type_json_to_string(e->type))),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->id, "id", SD_JSON_BUILD_STRING(e->id)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->path, "path", SD_JSON_BUILD_STRING(e->path)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->root, "root", SD_JSON_BUILD_STRING(e->root)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->title, "title", SD_JSON_BUILD_STRING(e->title)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!boot_entry_title(e), "showTitle", SD_JSON_BUILD_STRING(boot_entry_title(e))),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->sort_key, "sortKey", SD_JSON_BUILD_STRING(e->sort_key)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->version, "version", SD_JSON_BUILD_STRING(e->version)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->machine_id, "machineId", SD_JSON_BUILD_STRING(e->machine_id)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->architecture, "architecture", SD_JSON_BUILD_STRING(e->architecture)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!opts, "options", SD_JSON_BUILD_STRING(opts)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->kernel, "linux", SD_JSON_BUILD_STRING(e->kernel)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->efi, "efi", SD_JSON_BUILD_STRING(e->efi)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!strv_isempty(e->initrd), "initrd", SD_JSON_BUILD_STRV(e->initrd)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!e->device_tree, "devicetree", SD_JSON_BUILD_STRING(e->device_tree)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!strv_isempty(e->device_tree_overlay), "devicetreeOverlay", SD_JSON_BUILD_STRV(e->device_tree_overlay)));
|
||||
if (r < 0)
|
||||
return log_oom();
|
||||
|
||||
/* Sanitizers (only memory sanitizer?) do not like function call with too many
|
||||
* arguments and trigger false positive warnings. Let's not add too many json objects
|
||||
* at once. */
|
||||
r = sd_json_variant_merge_objectb(
|
||||
&v, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("isReported", SD_JSON_BUILD_BOOLEAN(e->reported_by_loader)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(e->tries_left != UINT_MAX, "triesLeft", SD_JSON_BUILD_UNSIGNED(e->tries_left)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(e->tries_done != UINT_MAX, "triesDone", SD_JSON_BUILD_UNSIGNED(e->tries_done)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(c->default_entry >= 0, "isDefault", SD_JSON_BUILD_BOOLEAN(i == (size_t) c->default_entry)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(c->selected_entry >= 0, "isSelected", SD_JSON_BUILD_BOOLEAN(i == (size_t) c->selected_entry))));
|
||||
|
||||
r = sd_json_variant_merge_objectbo(
|
||||
&v,
|
||||
SD_JSON_BUILD_PAIR("isReported", SD_JSON_BUILD_BOOLEAN(e->reported_by_loader)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(e->tries_left != UINT_MAX, "triesLeft", SD_JSON_BUILD_UNSIGNED(e->tries_left)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(e->tries_done != UINT_MAX, "triesDone", SD_JSON_BUILD_UNSIGNED(e->tries_done)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(c->default_entry >= 0, "isDefault", SD_JSON_BUILD_BOOLEAN(i == (size_t) c->default_entry)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(c->selected_entry >= 0, "isSelected", SD_JSON_BUILD_BOOLEAN(i == (size_t) c->selected_entry)));
|
||||
if (r < 0)
|
||||
return log_oom();
|
||||
|
||||
|
||||
+21
-21
@@ -1551,17 +1551,17 @@ int ipc_encrypt_credential(const char *name, usec_t timestamp, usec_t not_after,
|
||||
|
||||
_cleanup_(sd_json_variant_unrefp) sd_json_variant *reply = NULL;
|
||||
const char *error_id = NULL;
|
||||
r = varlink_callb(vl,
|
||||
"io.systemd.Credentials.Encrypt",
|
||||
&reply,
|
||||
&error_id,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!name, "name", SD_JSON_BUILD_STRING(name)),
|
||||
SD_JSON_BUILD_PAIR("data", SD_JSON_BUILD_VARIANT(jinput)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(timestamp != USEC_INFINITY, "timestamp", SD_JSON_BUILD_UNSIGNED(timestamp)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(not_after != USEC_INFINITY, "notAfter", SD_JSON_BUILD_UNSIGNED(not_after)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!FLAGS_SET(flags, CREDENTIAL_ANY_SCOPE), "scope", SD_JSON_BUILD_STRING(uid_is_valid(uid) ? "user" : "system")),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(uid_is_valid(uid), "uid", SD_JSON_BUILD_UNSIGNED(uid))));
|
||||
r = varlink_callbo(
|
||||
vl,
|
||||
"io.systemd.Credentials.Encrypt",
|
||||
&reply,
|
||||
&error_id,
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!name, "name", SD_JSON_BUILD_STRING(name)),
|
||||
SD_JSON_BUILD_PAIR("data", SD_JSON_BUILD_VARIANT(jinput)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(timestamp != USEC_INFINITY, "timestamp", SD_JSON_BUILD_UNSIGNED(timestamp)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(not_after != USEC_INFINITY, "notAfter", SD_JSON_BUILD_UNSIGNED(not_after)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!FLAGS_SET(flags, CREDENTIAL_ANY_SCOPE), "scope", SD_JSON_BUILD_STRING(uid_is_valid(uid) ? "user" : "system")),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(uid_is_valid(uid), "uid", SD_JSON_BUILD_UNSIGNED(uid)));
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to call Encrypt() varlink call.");
|
||||
if (!isempty(error_id)) {
|
||||
@@ -1611,16 +1611,16 @@ int ipc_decrypt_credential(const char *validate_name, usec_t validate_timestamp,
|
||||
|
||||
_cleanup_(sd_json_variant_unrefp) sd_json_variant *reply = NULL;
|
||||
const char *error_id = NULL;
|
||||
r = varlink_callb(vl,
|
||||
"io.systemd.Credentials.Decrypt",
|
||||
&reply,
|
||||
&error_id,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!validate_name, "name", SD_JSON_BUILD_STRING(validate_name)),
|
||||
SD_JSON_BUILD_PAIR("blob", SD_JSON_BUILD_VARIANT(jinput)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(validate_timestamp != USEC_INFINITY, "timestamp", SD_JSON_BUILD_UNSIGNED(validate_timestamp)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!FLAGS_SET(flags, CREDENTIAL_ANY_SCOPE), "scope", SD_JSON_BUILD_STRING(uid_is_valid(uid) ? "user" : "system")),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(uid_is_valid(uid), "uid", SD_JSON_BUILD_UNSIGNED(uid))));
|
||||
r = varlink_callbo(
|
||||
vl,
|
||||
"io.systemd.Credentials.Decrypt",
|
||||
&reply,
|
||||
&error_id,
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!validate_name, "name", SD_JSON_BUILD_STRING(validate_name)),
|
||||
SD_JSON_BUILD_PAIR("blob", SD_JSON_BUILD_VARIANT(jinput)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(validate_timestamp != USEC_INFINITY, "timestamp", SD_JSON_BUILD_UNSIGNED(validate_timestamp)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!FLAGS_SET(flags, CREDENTIAL_ANY_SCOPE), "scope", SD_JSON_BUILD_STRING(uid_is_valid(uid) ? "user" : "system")),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(uid_is_valid(uid), "uid", SD_JSON_BUILD_UNSIGNED(uid)));
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to call Decrypt() varlink call.");
|
||||
if (!isempty(error_id)) {
|
||||
|
||||
+13
-13
@@ -1647,19 +1647,19 @@ bool image_in_search_path(
|
||||
int image_to_json(const struct Image *img, sd_json_variant **ret) {
|
||||
assert(img);
|
||||
|
||||
return sd_json_build(ret,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR_STRING("Type", image_type_to_string(img->type)),
|
||||
SD_JSON_BUILD_PAIR_STRING("Class", image_class_to_string(img->class)),
|
||||
SD_JSON_BUILD_PAIR_STRING("Name", img->name),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!img->path, "Path", SD_JSON_BUILD_STRING(img->path)),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("ReadOnly", img->read_only),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(img->crtime != 0, "CreationTimestamp", SD_JSON_BUILD_UNSIGNED(img->crtime)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(img->mtime != 0, "ModificationTimestamp", SD_JSON_BUILD_UNSIGNED(img->mtime)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(img->usage != UINT64_MAX, "Usage", SD_JSON_BUILD_UNSIGNED(img->usage)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(img->usage_exclusive != UINT64_MAX, "UsageExclusive", SD_JSON_BUILD_UNSIGNED(img->usage_exclusive)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(img->limit != UINT64_MAX, "Limit", SD_JSON_BUILD_UNSIGNED(img->limit)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(img->limit_exclusive != UINT64_MAX, "LimitExclusive", SD_JSON_BUILD_UNSIGNED(img->limit_exclusive))));
|
||||
return sd_json_buildo(
|
||||
ret,
|
||||
SD_JSON_BUILD_PAIR_STRING("Type", image_type_to_string(img->type)),
|
||||
SD_JSON_BUILD_PAIR_STRING("Class", image_class_to_string(img->class)),
|
||||
SD_JSON_BUILD_PAIR_STRING("Name", img->name),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!img->path, "Path", SD_JSON_BUILD_STRING(img->path)),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("ReadOnly", img->read_only),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(img->crtime != 0, "CreationTimestamp", SD_JSON_BUILD_UNSIGNED(img->crtime)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(img->mtime != 0, "ModificationTimestamp", SD_JSON_BUILD_UNSIGNED(img->mtime)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(img->usage != UINT64_MAX, "Usage", SD_JSON_BUILD_UNSIGNED(img->usage)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(img->usage_exclusive != UINT64_MAX, "UsageExclusive", SD_JSON_BUILD_UNSIGNED(img->usage_exclusive)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(img->limit != UINT64_MAX, "Limit", SD_JSON_BUILD_UNSIGNED(img->limit)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(img->limit_exclusive != UINT64_MAX, "LimitExclusive", SD_JSON_BUILD_UNSIGNED(img->limit_exclusive)));
|
||||
}
|
||||
|
||||
static const char* const image_type_table[_IMAGE_TYPE_MAX] = {
|
||||
|
||||
@@ -4304,18 +4304,17 @@ int mountfsd_mount_image(
|
||||
}
|
||||
|
||||
sd_json_variant *reply = NULL;
|
||||
r = varlink_callb(
|
||||
r = varlink_callbo(
|
||||
vl,
|
||||
"io.systemd.MountFileSystem.MountImage",
|
||||
&reply,
|
||||
&error_id,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("imageFileDescriptor", SD_JSON_BUILD_UNSIGNED(0)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(userns_fd >= 0, "userNamespaceFileDescriptor", SD_JSON_BUILD_UNSIGNED(1)),
|
||||
SD_JSON_BUILD_PAIR("readOnly", SD_JSON_BUILD_BOOLEAN(FLAGS_SET(flags, DISSECT_IMAGE_MOUNT_READ_ONLY))),
|
||||
SD_JSON_BUILD_PAIR("growFileSystems", SD_JSON_BUILD_BOOLEAN(FLAGS_SET(flags, DISSECT_IMAGE_GROWFS))),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!ps, "imagePolicy", SD_JSON_BUILD_STRING(ps)),
|
||||
SD_JSON_BUILD_PAIR("allowInteractiveAuthentication", SD_JSON_BUILD_BOOLEAN(FLAGS_SET(flags, DISSECT_IMAGE_ALLOW_INTERACTIVE_AUTH)))));
|
||||
SD_JSON_BUILD_PAIR("imageFileDescriptor", SD_JSON_BUILD_UNSIGNED(0)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(userns_fd >= 0, "userNamespaceFileDescriptor", SD_JSON_BUILD_UNSIGNED(1)),
|
||||
SD_JSON_BUILD_PAIR("readOnly", SD_JSON_BUILD_BOOLEAN(FLAGS_SET(flags, DISSECT_IMAGE_MOUNT_READ_ONLY))),
|
||||
SD_JSON_BUILD_PAIR("growFileSystems", SD_JSON_BUILD_BOOLEAN(FLAGS_SET(flags, DISSECT_IMAGE_GROWFS))),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!ps, "imagePolicy", SD_JSON_BUILD_STRING(ps)),
|
||||
SD_JSON_BUILD_PAIR("allowInteractiveAuthentication", SD_JSON_BUILD_BOOLEAN(FLAGS_SET(flags, DISSECT_IMAGE_ALLOW_INTERACTIVE_AUTH))));
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to call MountImage() varlink call: %m");
|
||||
if (!isempty(error_id))
|
||||
|
||||
+8
-13
@@ -425,7 +425,7 @@ static int parse_package_metadata(const char *name, sd_json_variant *id_json, El
|
||||
/* Then we build a new object using the module name as the key, and merge it
|
||||
* with the previous parses, so that in the end it all fits together in a single
|
||||
* JSON blob. */
|
||||
r = sd_json_build(&w, SD_JSON_BUILD_OBJECT(SD_JSON_BUILD_PAIR(name, SD_JSON_BUILD_VARIANT(v))));
|
||||
r = sd_json_buildo(&w, SD_JSON_BUILD_PAIR(name, SD_JSON_BUILD_VARIANT(v)));
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to build JSON object: %m");
|
||||
|
||||
@@ -478,7 +478,7 @@ static int parse_buildid(Dwfl_Module *mod, Elf *elf, const char *name, StackCont
|
||||
/* We will later parse package metadata json and pass it to our caller. Prepare the
|
||||
* build-id in json format too, so that it can be appended and parsed cleanly. It
|
||||
* will then be added as metadata to the journal message with the stack trace. */
|
||||
r = sd_json_build(&id_json, SD_JSON_BUILD_OBJECT(SD_JSON_BUILD_PAIR("buildId", SD_JSON_BUILD_HEX(id, id_len))));
|
||||
r = sd_json_buildo(&id_json, SD_JSON_BUILD_PAIR("buildId", SD_JSON_BUILD_HEX(id, id_len)));
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "json_build on buildId failed: %m");
|
||||
}
|
||||
@@ -695,7 +695,7 @@ static int parse_elf(int fd, const char *executable, char **ret, sd_json_variant
|
||||
|
||||
/* If we found a build-id and nothing else, return at least that. */
|
||||
if (!package_metadata && id_json) {
|
||||
r = sd_json_build(&package_metadata, SD_JSON_BUILD_OBJECT(SD_JSON_BUILD_PAIR(e, SD_JSON_BUILD_VARIANT(id_json))));
|
||||
r = sd_json_buildo(&package_metadata, SD_JSON_BUILD_PAIR(e, SD_JSON_BUILD_VARIANT(id_json)));
|
||||
if (r < 0)
|
||||
return log_warning_errno(r, "Failed to build JSON object: %m");
|
||||
}
|
||||
@@ -708,23 +708,18 @@ static int parse_elf(int fd, const char *executable, char **ret, sd_json_variant
|
||||
|
||||
/* Note that e_type is always DYN for both executables and libraries, so we can't tell them apart from the header,
|
||||
* but we will search for the PT_INTERP section when parsing the metadata. */
|
||||
r = sd_json_build(&elf_metadata, SD_JSON_BUILD_OBJECT(SD_JSON_BUILD_PAIR("elfType", SD_JSON_BUILD_STRING(elf_type))));
|
||||
r = sd_json_buildo(&elf_metadata, SD_JSON_BUILD_PAIR("elfType", SD_JSON_BUILD_STRING(elf_type)));
|
||||
if (r < 0)
|
||||
return log_warning_errno(r, "Failed to build JSON object: %m");
|
||||
|
||||
#if HAVE_DWELF_ELF_E_MACHINE_STRING
|
||||
const char *elf_architecture = sym_dwelf_elf_e_machine_string(elf_header.e_machine);
|
||||
if (elf_architecture) {
|
||||
_cleanup_(sd_json_variant_unrefp) sd_json_variant *json_architecture = NULL;
|
||||
|
||||
r = sd_json_build(&json_architecture,
|
||||
SD_JSON_BUILD_OBJECT(SD_JSON_BUILD_PAIR("elfArchitecture", SD_JSON_BUILD_STRING(elf_architecture))));
|
||||
r = sd_json_variant_merge_objectbo(
|
||||
&elf_metadata,
|
||||
SD_JSON_BUILD_PAIR("elfArchitecture", SD_JSON_BUILD_STRING(elf_architecture)));
|
||||
if (r < 0)
|
||||
return log_warning_errno(r, "Failed to build JSON object: %m");
|
||||
|
||||
r = sd_json_variant_merge_object(&elf_metadata, json_architecture);
|
||||
if (r < 0)
|
||||
return log_warning_errno(r, "Failed to merge JSON objects: %m");
|
||||
return log_warning_errno(r, "Failed to add elfArchitecture field: %m");
|
||||
|
||||
if (ret)
|
||||
fprintf(c.m.f, "ELF object binary architecture: %s\n", elf_architecture);
|
||||
|
||||
+38
-38
@@ -76,14 +76,14 @@ int nsresource_allocate_userns(const char *name, uint64_t size) {
|
||||
return log_debug_errno(userns_fd_idx, "Failed to push userns fd into varlink connection: %m");
|
||||
|
||||
sd_json_variant *reply = NULL;
|
||||
r = varlink_callb(vl,
|
||||
"io.systemd.NamespaceResource.AllocateUserRange",
|
||||
&reply,
|
||||
&error_id,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("name", SD_JSON_BUILD_STRING(name)),
|
||||
SD_JSON_BUILD_PAIR("size", SD_JSON_BUILD_UNSIGNED(size)),
|
||||
SD_JSON_BUILD_PAIR("userNamespaceFileDescriptor", SD_JSON_BUILD_UNSIGNED(userns_fd_idx))));
|
||||
r = varlink_callbo(
|
||||
vl,
|
||||
"io.systemd.NamespaceResource.AllocateUserRange",
|
||||
&reply,
|
||||
&error_id,
|
||||
SD_JSON_BUILD_PAIR("name", SD_JSON_BUILD_STRING(name)),
|
||||
SD_JSON_BUILD_PAIR("size", SD_JSON_BUILD_UNSIGNED(size)),
|
||||
SD_JSON_BUILD_PAIR("userNamespaceFileDescriptor", SD_JSON_BUILD_UNSIGNED(userns_fd_idx)));
|
||||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to call AllocateUserRange() varlink call: %m");
|
||||
if (error_id)
|
||||
@@ -130,13 +130,13 @@ int nsresource_register_userns(const char *name, int userns_fd) {
|
||||
return log_debug_errno(userns_fd_idx, "Failed to push userns fd into varlink connection: %m");
|
||||
|
||||
sd_json_variant *reply = NULL;
|
||||
r = varlink_callb(vl,
|
||||
"io.systemd.NamespaceResource.RegisterUserNamespace",
|
||||
&reply,
|
||||
&error_id,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("name", SD_JSON_BUILD_STRING(name)),
|
||||
SD_JSON_BUILD_PAIR("userNamespaceFileDescriptor", SD_JSON_BUILD_UNSIGNED(userns_fd_idx))));
|
||||
r = varlink_callbo(
|
||||
vl,
|
||||
"io.systemd.NamespaceResource.RegisterUserNamespace",
|
||||
&reply,
|
||||
&error_id,
|
||||
SD_JSON_BUILD_PAIR("name", SD_JSON_BUILD_STRING(name)),
|
||||
SD_JSON_BUILD_PAIR("userNamespaceFileDescriptor", SD_JSON_BUILD_UNSIGNED(userns_fd_idx)));
|
||||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to call RegisterUserNamespace() varlink call: %m");
|
||||
if (error_id)
|
||||
@@ -178,13 +178,13 @@ int nsresource_add_mount(int userns_fd, int mount_fd) {
|
||||
return log_error_errno(mount_fd_idx, "Failed to push mount fd into varlink connection: %m");
|
||||
|
||||
sd_json_variant *reply = NULL;
|
||||
r = varlink_callb(vl,
|
||||
"io.systemd.NamespaceResource.AddMountToUserNamespace",
|
||||
&reply,
|
||||
&error_id,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("userNamespaceFileDescriptor", SD_JSON_BUILD_UNSIGNED(userns_fd_idx)),
|
||||
SD_JSON_BUILD_PAIR("mountFileDescriptor", SD_JSON_BUILD_UNSIGNED(mount_fd_idx))));
|
||||
r = varlink_callbo(
|
||||
vl,
|
||||
"io.systemd.NamespaceResource.AddMountToUserNamespace",
|
||||
&reply,
|
||||
&error_id,
|
||||
SD_JSON_BUILD_PAIR("userNamespaceFileDescriptor", SD_JSON_BUILD_UNSIGNED(userns_fd_idx)),
|
||||
SD_JSON_BUILD_PAIR("mountFileDescriptor", SD_JSON_BUILD_UNSIGNED(mount_fd_idx)));
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to call AddMountToUserNamespace() varlink call: %m");
|
||||
if (streq_ptr(error_id, "io.systemd.NamespaceResource.UserNamespaceNotRegistered")) {
|
||||
@@ -230,13 +230,13 @@ int nsresource_add_cgroup(int userns_fd, int cgroup_fd) {
|
||||
return log_debug_errno(userns_fd_idx, "Failed to push cgroup fd into varlink connection: %m");
|
||||
|
||||
sd_json_variant *reply = NULL;
|
||||
r = varlink_callb(vl,
|
||||
"io.systemd.NamespaceResource.AddControlGroupToUserNamespace",
|
||||
&reply,
|
||||
&error_id,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("userNamespaceFileDescriptor", SD_JSON_BUILD_UNSIGNED(userns_fd_idx)),
|
||||
SD_JSON_BUILD_PAIR("controlGroupFileDescriptor", SD_JSON_BUILD_UNSIGNED(cgroup_fd_idx))));
|
||||
r = varlink_callbo(
|
||||
vl,
|
||||
"io.systemd.NamespaceResource.AddControlGroupToUserNamespace",
|
||||
&reply,
|
||||
&error_id,
|
||||
SD_JSON_BUILD_PAIR("userNamespaceFileDescriptor", SD_JSON_BUILD_UNSIGNED(userns_fd_idx)),
|
||||
SD_JSON_BUILD_PAIR("controlGroupFileDescriptor", SD_JSON_BUILD_UNSIGNED(cgroup_fd_idx)));
|
||||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to call AddControlGroupToUserNamespace() varlink call: %m");
|
||||
if (streq_ptr(error_id, "io.systemd.NamespaceResource.UserNamespaceNotRegistered")) {
|
||||
@@ -294,15 +294,15 @@ int nsresource_add_netif(
|
||||
return log_debug_errno(netns_fd_idx, "Failed to push netns fd into varlink connection: %m");
|
||||
|
||||
sd_json_variant *reply = NULL;
|
||||
r = varlink_callb(vl,
|
||||
"io.systemd.NamespaceResource.AddNetworkToUserNamespace",
|
||||
&reply,
|
||||
&error_id,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("userNamespaceFileDescriptor", SD_JSON_BUILD_UNSIGNED(userns_fd_idx)),
|
||||
SD_JSON_BUILD_PAIR("networkNamespaceFileDescriptor", SD_JSON_BUILD_UNSIGNED(netns_fd_idx)),
|
||||
SD_JSON_BUILD_PAIR("mode", JSON_BUILD_CONST_STRING("veth")),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!namespace_ifname, "namespaceInterfaceName", SD_JSON_BUILD_STRING(namespace_ifname))));
|
||||
r = varlink_callbo(
|
||||
vl,
|
||||
"io.systemd.NamespaceResource.AddNetworkToUserNamespace",
|
||||
&reply,
|
||||
&error_id,
|
||||
SD_JSON_BUILD_PAIR("userNamespaceFileDescriptor", SD_JSON_BUILD_UNSIGNED(userns_fd_idx)),
|
||||
SD_JSON_BUILD_PAIR("networkNamespaceFileDescriptor", SD_JSON_BUILD_UNSIGNED(netns_fd_idx)),
|
||||
SD_JSON_BUILD_PAIR("mode", JSON_BUILD_CONST_STRING("veth")),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!namespace_ifname, "namespaceInterfaceName", SD_JSON_BUILD_STRING(namespace_ifname)));
|
||||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to call AddNetworkToUserNamespace() varlink call: %m");
|
||||
if (streq_ptr(error_id, "io.systemd.NamespaceResource.UserNamespaceNotRegistered")) {
|
||||
|
||||
+33
-33
@@ -6321,10 +6321,10 @@ static int tpm2_userspace_log(
|
||||
assert_se(a = tpm2_hash_alg_to_string(values->digests[i].hashAlg));
|
||||
assert_se(implementation = EVP_get_digestbyname(a));
|
||||
|
||||
r = sd_json_variant_append_arrayb(
|
||||
&array, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR_STRING("hashAlg", a),
|
||||
SD_JSON_BUILD_PAIR("digest", SD_JSON_BUILD_HEX(&values->digests[i].digest, EVP_MD_size(implementation)))));
|
||||
r = sd_json_variant_append_arraybo(
|
||||
&array,
|
||||
SD_JSON_BUILD_PAIR_STRING("hashAlg", a),
|
||||
SD_JSON_BUILD_PAIR("digest", SD_JSON_BUILD_HEX(&values->digests[i].digest, EVP_MD_size(implementation))));
|
||||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to append digest object to JSON array: %m");
|
||||
}
|
||||
@@ -6335,15 +6335,16 @@ static int tpm2_userspace_log(
|
||||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to acquire boot ID: %m");
|
||||
|
||||
r = sd_json_build(&v, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("pcr", SD_JSON_BUILD_UNSIGNED(pcr_index)),
|
||||
SD_JSON_BUILD_PAIR("digests", SD_JSON_BUILD_VARIANT(array)),
|
||||
SD_JSON_BUILD_PAIR("content_type", SD_JSON_BUILD_STRING("systemd")),
|
||||
SD_JSON_BUILD_PAIR("content", SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!description, "string", SD_JSON_BUILD_STRING(description)),
|
||||
SD_JSON_BUILD_PAIR("bootId", SD_JSON_BUILD_ID128(boot_id)),
|
||||
SD_JSON_BUILD_PAIR("timestamp", SD_JSON_BUILD_UNSIGNED(now(CLOCK_BOOTTIME))),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(event_type >= 0, "eventType", SD_JSON_BUILD_STRING(tpm2_userspace_event_type_to_string(event_type)))))));
|
||||
r = sd_json_buildo(
|
||||
&v,
|
||||
SD_JSON_BUILD_PAIR("pcr", SD_JSON_BUILD_UNSIGNED(pcr_index)),
|
||||
SD_JSON_BUILD_PAIR("digests", SD_JSON_BUILD_VARIANT(array)),
|
||||
SD_JSON_BUILD_PAIR("content_type", SD_JSON_BUILD_STRING("systemd")),
|
||||
SD_JSON_BUILD_PAIR("content", SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!description, "string", SD_JSON_BUILD_STRING(description)),
|
||||
SD_JSON_BUILD_PAIR("bootId", SD_JSON_BUILD_ID128(boot_id)),
|
||||
SD_JSON_BUILD_PAIR("timestamp", SD_JSON_BUILD_UNSIGNED(now(CLOCK_BOOTTIME))),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(event_type >= 0, "eventType", SD_JSON_BUILD_STRING(tpm2_userspace_event_type_to_string(event_type))))));
|
||||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to build log record JSON: %m");
|
||||
|
||||
@@ -6622,11 +6623,10 @@ int tpm2_pcr_prediction_to_json(
|
||||
if (!vj)
|
||||
continue;
|
||||
|
||||
r = sd_json_variant_append_arrayb(
|
||||
r = sd_json_variant_append_arraybo(
|
||||
&aj,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR_INTEGER("pcr", pcr),
|
||||
SD_JSON_BUILD_PAIR_VARIANT("values", vj)));
|
||||
SD_JSON_BUILD_PAIR_INTEGER("pcr", pcr),
|
||||
SD_JSON_BUILD_PAIR_VARIANT("values", vj));
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to append PCR variants to JSON array: %m");
|
||||
}
|
||||
@@ -7384,22 +7384,22 @@ int tpm2_make_luks2_json(
|
||||
* other programming languages. Let's not make things worse though, i.e. future additions to the JSON
|
||||
* object should use "_" rather than "-" in field names. */
|
||||
|
||||
r = sd_json_build(&v,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("type", JSON_BUILD_CONST_STRING("systemd-tpm2")),
|
||||
SD_JSON_BUILD_PAIR("keyslots", SD_JSON_BUILD_ARRAY(SD_JSON_BUILD_STRING(keyslot_as_string))),
|
||||
SD_JSON_BUILD_PAIR("tpm2-blob", JSON_BUILD_IOVEC_BASE64(blob)),
|
||||
SD_JSON_BUILD_PAIR("tpm2-pcrs", SD_JSON_BUILD_VARIANT(hmj)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(pcr_bank != 0 && tpm2_hash_alg_to_string(pcr_bank), "tpm2-pcr-bank", SD_JSON_BUILD_STRING(tpm2_hash_alg_to_string(pcr_bank))),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(primary_alg != 0 && tpm2_asym_alg_to_string(primary_alg), "tpm2-primary-alg", SD_JSON_BUILD_STRING(tpm2_asym_alg_to_string(primary_alg))),
|
||||
SD_JSON_BUILD_PAIR("tpm2-policy-hash", JSON_BUILD_IOVEC_HEX(policy_hash)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(FLAGS_SET(flags, TPM2_FLAGS_USE_PIN), "tpm2-pin", SD_JSON_BUILD_BOOLEAN(true)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(FLAGS_SET(flags, TPM2_FLAGS_USE_PCRLOCK), "tpm2_pcrlock", SD_JSON_BUILD_BOOLEAN(true)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(pubkey_pcr_mask != 0, "tpm2_pubkey_pcrs", SD_JSON_BUILD_VARIANT(pkmj)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(iovec_is_set(pubkey), "tpm2_pubkey", JSON_BUILD_IOVEC_BASE64(pubkey)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(iovec_is_set(salt), "tpm2_salt", JSON_BUILD_IOVEC_BASE64(salt)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(iovec_is_set(srk), "tpm2_srk", JSON_BUILD_IOVEC_BASE64(srk)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(iovec_is_set(pcrlock_nv), "tpm2_pcrlock_nv", JSON_BUILD_IOVEC_BASE64(pcrlock_nv))));
|
||||
r = sd_json_buildo(
|
||||
&v,
|
||||
SD_JSON_BUILD_PAIR("type", JSON_BUILD_CONST_STRING("systemd-tpm2")),
|
||||
SD_JSON_BUILD_PAIR("keyslots", SD_JSON_BUILD_ARRAY(SD_JSON_BUILD_STRING(keyslot_as_string))),
|
||||
SD_JSON_BUILD_PAIR("tpm2-blob", JSON_BUILD_IOVEC_BASE64(blob)),
|
||||
SD_JSON_BUILD_PAIR("tpm2-pcrs", SD_JSON_BUILD_VARIANT(hmj)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(pcr_bank != 0 && tpm2_hash_alg_to_string(pcr_bank), "tpm2-pcr-bank", SD_JSON_BUILD_STRING(tpm2_hash_alg_to_string(pcr_bank))),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(primary_alg != 0 && tpm2_asym_alg_to_string(primary_alg), "tpm2-primary-alg", SD_JSON_BUILD_STRING(tpm2_asym_alg_to_string(primary_alg))),
|
||||
SD_JSON_BUILD_PAIR("tpm2-policy-hash", JSON_BUILD_IOVEC_HEX(policy_hash)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(FLAGS_SET(flags, TPM2_FLAGS_USE_PIN), "tpm2-pin", SD_JSON_BUILD_BOOLEAN(true)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(FLAGS_SET(flags, TPM2_FLAGS_USE_PCRLOCK), "tpm2_pcrlock", SD_JSON_BUILD_BOOLEAN(true)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(pubkey_pcr_mask != 0, "tpm2_pubkey_pcrs", SD_JSON_BUILD_VARIANT(pkmj)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(iovec_is_set(pubkey), "tpm2_pubkey", JSON_BUILD_IOVEC_BASE64(pubkey)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(iovec_is_set(salt), "tpm2_salt", JSON_BUILD_IOVEC_BASE64(salt)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(iovec_is_set(srk), "tpm2_srk", JSON_BUILD_IOVEC_BASE64(srk)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(iovec_is_set(pcrlock_nv), "tpm2_pcrlock_nv", JSON_BUILD_IOVEC_BASE64(pcrlock_nv)));
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
||||
@@ -137,23 +137,23 @@ int nss_passwd_to_user_record(
|
||||
spwd->sp_inact * USEC_PER_DAY, UINT64_MAX);
|
||||
|
||||
hr->json = sd_json_variant_unref(hr->json);
|
||||
r = sd_json_build(&hr->json, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("userName", SD_JSON_BUILD_STRING(hr->user_name)),
|
||||
SD_JSON_BUILD_PAIR("uid", SD_JSON_BUILD_UNSIGNED(hr->uid)),
|
||||
SD_JSON_BUILD_PAIR("gid", SD_JSON_BUILD_UNSIGNED(hr->gid)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!hr->real_name, "realName", SD_JSON_BUILD_STRING(hr->real_name)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!hr->home_directory, "homeDirectory", SD_JSON_BUILD_STRING(hr->home_directory)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!hr->shell, "shell", SD_JSON_BUILD_STRING(hr->shell)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!strv_isempty(hr->hashed_password), "privileged", SD_JSON_BUILD_OBJECT(SD_JSON_BUILD_PAIR("hashedPassword", SD_JSON_BUILD_STRV(hr->hashed_password)))),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->locked >= 0, "locked", SD_JSON_BUILD_BOOLEAN(hr->locked)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->not_after_usec != UINT64_MAX, "notAfterUSec", SD_JSON_BUILD_UNSIGNED(hr->not_after_usec)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->password_change_now >= 0, "passwordChangeNow", SD_JSON_BUILD_BOOLEAN(hr->password_change_now)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->last_password_change_usec != UINT64_MAX, "lastPasswordChangeUSec", SD_JSON_BUILD_UNSIGNED(hr->last_password_change_usec)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->password_change_min_usec != UINT64_MAX, "passwordChangeMinUSec", SD_JSON_BUILD_UNSIGNED(hr->password_change_min_usec)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->password_change_max_usec != UINT64_MAX, "passwordChangeMaxUSec", SD_JSON_BUILD_UNSIGNED(hr->password_change_max_usec)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->password_change_warn_usec != UINT64_MAX, "passwordChangeWarnUSec", SD_JSON_BUILD_UNSIGNED(hr->password_change_warn_usec)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->password_change_inactive_usec != UINT64_MAX, "passwordChangeInactiveUSec", SD_JSON_BUILD_UNSIGNED(hr->password_change_inactive_usec))));
|
||||
|
||||
r = sd_json_buildo(
|
||||
&hr->json,
|
||||
SD_JSON_BUILD_PAIR("userName", SD_JSON_BUILD_STRING(hr->user_name)),
|
||||
SD_JSON_BUILD_PAIR("uid", SD_JSON_BUILD_UNSIGNED(hr->uid)),
|
||||
SD_JSON_BUILD_PAIR("gid", SD_JSON_BUILD_UNSIGNED(hr->gid)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!hr->real_name, "realName", SD_JSON_BUILD_STRING(hr->real_name)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!hr->home_directory, "homeDirectory", SD_JSON_BUILD_STRING(hr->home_directory)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!!hr->shell, "shell", SD_JSON_BUILD_STRING(hr->shell)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!strv_isempty(hr->hashed_password), "privileged", SD_JSON_BUILD_OBJECT(SD_JSON_BUILD_PAIR("hashedPassword", SD_JSON_BUILD_STRV(hr->hashed_password)))),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->locked >= 0, "locked", SD_JSON_BUILD_BOOLEAN(hr->locked)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->not_after_usec != UINT64_MAX, "notAfterUSec", SD_JSON_BUILD_UNSIGNED(hr->not_after_usec)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->password_change_now >= 0, "passwordChangeNow", SD_JSON_BUILD_BOOLEAN(hr->password_change_now)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->last_password_change_usec != UINT64_MAX, "lastPasswordChangeUSec", SD_JSON_BUILD_UNSIGNED(hr->last_password_change_usec)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->password_change_min_usec != UINT64_MAX, "passwordChangeMinUSec", SD_JSON_BUILD_UNSIGNED(hr->password_change_min_usec)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->password_change_max_usec != UINT64_MAX, "passwordChangeMaxUSec", SD_JSON_BUILD_UNSIGNED(hr->password_change_max_usec)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->password_change_warn_usec != UINT64_MAX, "passwordChangeWarnUSec", SD_JSON_BUILD_UNSIGNED(hr->password_change_warn_usec)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(hr->password_change_inactive_usec != UINT64_MAX, "passwordChangeInactiveUSec", SD_JSON_BUILD_UNSIGNED(hr->password_change_inactive_usec)));
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -319,12 +319,13 @@ int nss_group_to_group_record(
|
||||
return r;
|
||||
}
|
||||
|
||||
r = sd_json_build(&g->json, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("groupName", SD_JSON_BUILD_STRING(g->group_name)),
|
||||
SD_JSON_BUILD_PAIR("gid", SD_JSON_BUILD_UNSIGNED(g->gid)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!strv_isempty(g->members), "members", SD_JSON_BUILD_STRV(g->members)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!strv_isempty(g->hashed_password), "privileged", SD_JSON_BUILD_OBJECT(SD_JSON_BUILD_PAIR("hashedPassword", SD_JSON_BUILD_STRV(g->hashed_password)))),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!strv_isempty(g->administrators), "administrators", SD_JSON_BUILD_STRV(g->administrators))));
|
||||
r = sd_json_buildo(
|
||||
&g->json,
|
||||
SD_JSON_BUILD_PAIR("groupName", SD_JSON_BUILD_STRING(g->group_name)),
|
||||
SD_JSON_BUILD_PAIR("gid", SD_JSON_BUILD_UNSIGNED(g->gid)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!strv_isempty(g->members), "members", SD_JSON_BUILD_STRV(g->members)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!strv_isempty(g->hashed_password), "privileged", SD_JSON_BUILD_OBJECT(SD_JSON_BUILD_PAIR("hashedPassword", SD_JSON_BUILD_STRV(g->hashed_password)))),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(!strv_isempty(g->administrators), "administrators", SD_JSON_BUILD_STRV(g->administrators)));
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
||||
+6
-12
@@ -618,8 +618,7 @@ int userdb_by_name(const char *name, UserDBFlags flags, UserRecord **ret) {
|
||||
if (!valid_user_group_name(name, VALID_USER_RELAX))
|
||||
return -EINVAL;
|
||||
|
||||
r = sd_json_build(&query, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("userName", SD_JSON_BUILD_STRING(name))));
|
||||
r = sd_json_buildo(&query, SD_JSON_BUILD_PAIR("userName", SD_JSON_BUILD_STRING(name)));
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -671,8 +670,7 @@ int userdb_by_uid(uid_t uid, UserDBFlags flags, UserRecord **ret) {
|
||||
if (!uid_is_valid(uid))
|
||||
return -EINVAL;
|
||||
|
||||
r = sd_json_build(&query, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("uid", SD_JSON_BUILD_UNSIGNED(uid))));
|
||||
r = sd_json_buildo(&query, SD_JSON_BUILD_PAIR("uid", SD_JSON_BUILD_UNSIGNED(uid)));
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -891,8 +889,7 @@ int groupdb_by_name(const char *name, UserDBFlags flags, GroupRecord **ret) {
|
||||
if (!valid_user_group_name(name, VALID_USER_RELAX))
|
||||
return -EINVAL;
|
||||
|
||||
r = sd_json_build(&query, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("groupName", SD_JSON_BUILD_STRING(name))));
|
||||
r = sd_json_buildo(&query, SD_JSON_BUILD_PAIR("groupName", SD_JSON_BUILD_STRING(name)));
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -942,8 +939,7 @@ int groupdb_by_gid(gid_t gid, UserDBFlags flags, GroupRecord **ret) {
|
||||
if (!gid_is_valid(gid))
|
||||
return -EINVAL;
|
||||
|
||||
r = sd_json_build(&query, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("gid", SD_JSON_BUILD_UNSIGNED(gid))));
|
||||
r = sd_json_buildo(&query, SD_JSON_BUILD_PAIR("gid", SD_JSON_BUILD_UNSIGNED(gid)));
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -1150,8 +1146,7 @@ int membershipdb_by_user(const char *name, UserDBFlags flags, UserDBIterator **r
|
||||
if (!valid_user_group_name(name, VALID_USER_RELAX))
|
||||
return -EINVAL;
|
||||
|
||||
r = sd_json_build(&query, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("userName", SD_JSON_BUILD_STRING(name))));
|
||||
r = sd_json_buildo(&query, SD_JSON_BUILD_PAIR("userName", SD_JSON_BUILD_STRING(name)));
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -1196,8 +1191,7 @@ int membershipdb_by_group(const char *name, UserDBFlags flags, UserDBIterator **
|
||||
if (!valid_user_group_name(name, VALID_USER_RELAX))
|
||||
return -EINVAL;
|
||||
|
||||
r = sd_json_build(&query, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("groupName", SD_JSON_BUILD_STRING(name))));
|
||||
r = sd_json_buildo(&query, SD_JSON_BUILD_PAIR("groupName", SD_JSON_BUILD_STRING(name)));
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
||||
+53
-48
@@ -1308,12 +1308,13 @@ static int generic_method_get_info(
|
||||
|
||||
strv_sort(interfaces);
|
||||
|
||||
return varlink_replyb(link, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR_STRING("vendor", "The systemd Project"),
|
||||
SD_JSON_BUILD_PAIR_STRING("product", product),
|
||||
SD_JSON_BUILD_PAIR_STRING("version", PROJECT_VERSION_FULL " (" GIT_VERSION ")"),
|
||||
SD_JSON_BUILD_PAIR_STRING("url", "https://systemd.io/"),
|
||||
SD_JSON_BUILD_PAIR_STRV("interfaces", interfaces)));
|
||||
return varlink_replybo(
|
||||
link,
|
||||
SD_JSON_BUILD_PAIR_STRING("vendor", "The systemd Project"),
|
||||
SD_JSON_BUILD_PAIR_STRING("product", product),
|
||||
SD_JSON_BUILD_PAIR_STRING("version", PROJECT_VERSION_FULL " (" GIT_VERSION ")"),
|
||||
SD_JSON_BUILD_PAIR_STRING("url", "https://systemd.io/"),
|
||||
SD_JSON_BUILD_PAIR_STRV("interfaces", interfaces));
|
||||
}
|
||||
|
||||
static int generic_method_get_interface_description(
|
||||
@@ -1339,17 +1340,18 @@ static int generic_method_get_interface_description(
|
||||
|
||||
interface = hashmap_get(ASSERT_PTR(link->server)->interfaces, name);
|
||||
if (!interface)
|
||||
return varlink_errorb(link, VARLINK_ERROR_INTERFACE_NOT_FOUND,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR_STRING("interface", name)));
|
||||
return varlink_errorbo(
|
||||
link,
|
||||
VARLINK_ERROR_INTERFACE_NOT_FOUND,
|
||||
SD_JSON_BUILD_PAIR_STRING("interface", name));
|
||||
|
||||
r = varlink_idl_format(interface, &text);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
return varlink_replyb(link,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR_STRING("description", text)));
|
||||
return varlink_replybo(
|
||||
link,
|
||||
SD_JSON_BUILD_PAIR_STRING("description", text));
|
||||
}
|
||||
|
||||
static int varlink_dispatch_method(Varlink *v) {
|
||||
@@ -1475,7 +1477,7 @@ static int varlink_dispatch_method(Varlink *v) {
|
||||
}
|
||||
}
|
||||
} else if (IN_SET(v->state, VARLINK_PROCESSING_METHOD, VARLINK_PROCESSING_METHOD_MORE)) {
|
||||
r = varlink_errorb(v, VARLINK_ERROR_METHOD_NOT_FOUND, SD_JSON_BUILD_OBJECT(SD_JSON_BUILD_PAIR("method", SD_JSON_BUILD_STRING(method))));
|
||||
r = varlink_errorbo(v, VARLINK_ERROR_METHOD_NOT_FOUND, SD_JSON_BUILD_PAIR("method", SD_JSON_BUILD_STRING(method)));
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
@@ -2025,10 +2027,11 @@ int varlink_send(Varlink *v, const char *method, sd_json_variant *parameters) {
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to sanitize parameters: %m");
|
||||
|
||||
r = sd_json_build(&m, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("method", SD_JSON_BUILD_STRING(method)),
|
||||
SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters)),
|
||||
SD_JSON_BUILD_PAIR("oneway", SD_JSON_BUILD_BOOLEAN(true))));
|
||||
r = sd_json_buildo(
|
||||
&m,
|
||||
SD_JSON_BUILD_PAIR("method", SD_JSON_BUILD_STRING(method)),
|
||||
SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters)),
|
||||
SD_JSON_BUILD_PAIR("oneway", SD_JSON_BUILD_BOOLEAN(true)));
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to build json message: %m");
|
||||
|
||||
@@ -2076,9 +2079,10 @@ int varlink_invoke(Varlink *v, const char *method, sd_json_variant *parameters)
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to sanitize parameters: %m");
|
||||
|
||||
r = sd_json_build(&m, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("method", SD_JSON_BUILD_STRING(method)),
|
||||
SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters))));
|
||||
r = sd_json_buildo(
|
||||
&m,
|
||||
SD_JSON_BUILD_PAIR("method", SD_JSON_BUILD_STRING(method)),
|
||||
SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters)));
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to build json message: %m");
|
||||
|
||||
@@ -2129,10 +2133,11 @@ int varlink_observe(Varlink *v, const char *method, sd_json_variant *parameters)
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to sanitize parameters: %m");
|
||||
|
||||
r = sd_json_build(&m, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("method", SD_JSON_BUILD_STRING(method)),
|
||||
SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters)),
|
||||
SD_JSON_BUILD_PAIR("more", SD_JSON_BUILD_BOOLEAN(true))));
|
||||
r = sd_json_buildo(
|
||||
&m,
|
||||
SD_JSON_BUILD_PAIR("method", SD_JSON_BUILD_STRING(method)),
|
||||
SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters)),
|
||||
SD_JSON_BUILD_PAIR("more", SD_JSON_BUILD_BOOLEAN(true)));
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to build json message: %m");
|
||||
|
||||
@@ -2193,9 +2198,10 @@ int varlink_call_full(
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to sanitize parameters: %m");
|
||||
|
||||
r = sd_json_build(&m, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("method", SD_JSON_BUILD_STRING(method)),
|
||||
SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters))));
|
||||
r = sd_json_buildo(
|
||||
&m,
|
||||
SD_JSON_BUILD_PAIR("method", SD_JSON_BUILD_STRING(method)),
|
||||
SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters)));
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to build json message: %m");
|
||||
|
||||
@@ -2355,10 +2361,11 @@ int varlink_collect_full(
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to sanitize parameters: %m");
|
||||
|
||||
r = sd_json_build(&m, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("method", SD_JSON_BUILD_STRING(method)),
|
||||
SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters)),
|
||||
SD_JSON_BUILD_PAIR("more", SD_JSON_BUILD_BOOLEAN(true))));
|
||||
r = sd_json_buildo(
|
||||
&m,
|
||||
SD_JSON_BUILD_PAIR("method", SD_JSON_BUILD_STRING(method)),
|
||||
SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters)),
|
||||
SD_JSON_BUILD_PAIR("more", SD_JSON_BUILD_BOOLEAN(true)));
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to build json message: %m");
|
||||
|
||||
@@ -2492,7 +2499,7 @@ int varlink_reply(Varlink *v, sd_json_variant *parameters) {
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to sanitize parameters: %m");
|
||||
|
||||
r = sd_json_build(&m, SD_JSON_BUILD_OBJECT(SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters))));
|
||||
r = sd_json_buildo(&m, SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters)));
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to build json message: %m");
|
||||
|
||||
@@ -2566,9 +2573,10 @@ int varlink_error(Varlink *v, const char *error_id, sd_json_variant *parameters)
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to sanitize parameters: %m");
|
||||
|
||||
r = sd_json_build(&m, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("error", SD_JSON_BUILD_STRING(error_id)),
|
||||
SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters))));
|
||||
r = sd_json_buildo(
|
||||
&m,
|
||||
SD_JSON_BUILD_PAIR("error", SD_JSON_BUILD_STRING(error_id)),
|
||||
SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters)));
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to build json message: %m");
|
||||
|
||||
@@ -2633,9 +2641,7 @@ int varlink_error_invalid_parameter(Varlink *v, sd_json_variant *parameters) {
|
||||
if (sd_json_variant_is_string(parameters)) {
|
||||
_cleanup_(sd_json_variant_unrefp) sd_json_variant *parameters_obj = NULL;
|
||||
|
||||
r = sd_json_build(¶meters_obj,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("parameter", SD_JSON_BUILD_VARIANT(parameters))));
|
||||
r = sd_json_buildo(¶meters_obj,SD_JSON_BUILD_PAIR("parameter", SD_JSON_BUILD_VARIANT(parameters)));
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -2646,9 +2652,7 @@ int varlink_error_invalid_parameter(Varlink *v, sd_json_variant *parameters) {
|
||||
sd_json_variant_elements(parameters) > 0) {
|
||||
_cleanup_(sd_json_variant_unrefp) sd_json_variant *parameters_obj = NULL;
|
||||
|
||||
r = sd_json_build(¶meters_obj,
|
||||
SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("parameter", SD_JSON_BUILD_VARIANT(sd_json_variant_by_index(parameters, 0)))));
|
||||
r = sd_json_buildo(¶meters_obj, SD_JSON_BUILD_PAIR("parameter", SD_JSON_BUILD_VARIANT(sd_json_variant_by_index(parameters, 0))));
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -2659,17 +2663,17 @@ int varlink_error_invalid_parameter(Varlink *v, sd_json_variant *parameters) {
|
||||
}
|
||||
|
||||
int varlink_error_invalid_parameter_name(Varlink *v, const char *name) {
|
||||
return varlink_errorb(
|
||||
return varlink_errorbo(
|
||||
v,
|
||||
VARLINK_ERROR_INVALID_PARAMETER,
|
||||
SD_JSON_BUILD_OBJECT(SD_JSON_BUILD_PAIR("parameter", SD_JSON_BUILD_STRING(name))));
|
||||
SD_JSON_BUILD_PAIR("parameter", SD_JSON_BUILD_STRING(name)));
|
||||
}
|
||||
|
||||
int varlink_error_errno(Varlink *v, int error) {
|
||||
return varlink_errorb(
|
||||
return varlink_errorbo(
|
||||
v,
|
||||
VARLINK_ERROR_SYSTEM,
|
||||
SD_JSON_BUILD_OBJECT(SD_JSON_BUILD_PAIR("errno", SD_JSON_BUILD_INTEGER(abs(error)))));
|
||||
SD_JSON_BUILD_PAIR("errno", SD_JSON_BUILD_INTEGER(abs(error))));
|
||||
}
|
||||
|
||||
int varlink_notify(Varlink *v, sd_json_variant *parameters) {
|
||||
@@ -2693,9 +2697,10 @@ int varlink_notify(Varlink *v, sd_json_variant *parameters) {
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to sanitize parameters: %m");
|
||||
|
||||
r = sd_json_build(&m, SD_JSON_BUILD_OBJECT(
|
||||
SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters)),
|
||||
SD_JSON_BUILD_PAIR("continues", SD_JSON_BUILD_BOOLEAN(true))));
|
||||
r = sd_json_buildo(
|
||||
&m,
|
||||
SD_JSON_BUILD_PAIR("parameters", SD_JSON_BUILD_VARIANT(parameters)),
|
||||
SD_JSON_BUILD_PAIR("continues", SD_JSON_BUILD_BOOLEAN(true)));
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to build json message: %m");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user