diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-10-14 17:18:41 +0900 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2022-10-14 18:08:11 +0200 |
commit | f6e88aac2c30392a934507591d70a35ca1ea7acf (patch) | |
tree | a663b8171d9695d2f94f87eda278cd0baf9fc630 /src/shared/elf-util.c | |
parent | 417cbcd6be49c2792fb1ed70fefb41cb7ac3c3bf (diff) | |
download | systemd-f6e88aac2c30392a934507591d70a35ca1ea7acf.tar.gz |
elf-util: drop assertion for metadata in report_module_metadata()
Fixes a bug introduced by 1a0281a3ebf4f8c16d40aa9e63103f16cd23bb2a.
Fixes RHBZ#2134741 (https://bugzilla.redhat.com/show_bug.cgi?id=2134741).
Diffstat (limited to 'src/shared/elf-util.c')
-rw-r--r-- | src/shared/elf-util.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/src/shared/elf-util.c b/src/shared/elf-util.c index 6e4a94a048..c0f540abc5 100644 --- a/src/shared/elf-util.c +++ b/src/shared/elf-util.c @@ -293,29 +293,30 @@ static char* build_package_reference( static void report_module_metadata(StackContext *c, const char *name, JsonVariant *metadata) { assert(c); assert(name); - assert(metadata); if (!c->f) return; - const char - *build_id = json_variant_string(json_variant_by_key(metadata, "buildId")), - *type = json_variant_string(json_variant_by_key(metadata, "type")), - *package = json_variant_string(json_variant_by_key(metadata, "name")), - *version = json_variant_string(json_variant_by_key(metadata, "version")), - *arch = json_variant_string(json_variant_by_key(metadata, "architecture")); - fprintf(c->f, "Module %s", name); - if (package) { - /* Version/architecture is only meaningful with a package name. - * Skip the detailed fields if package is unknown. */ - _cleanup_free_ char *id = build_package_reference(type, package, version, arch); - fprintf(c->f, " from %s", strnull(id)); - } + if (metadata) { + const char + *build_id = json_variant_string(json_variant_by_key(metadata, "buildId")), + *type = json_variant_string(json_variant_by_key(metadata, "type")), + *package = json_variant_string(json_variant_by_key(metadata, "name")), + *version = json_variant_string(json_variant_by_key(metadata, "version")), + *arch = json_variant_string(json_variant_by_key(metadata, "architecture")); + + if (package) { + /* Version/architecture is only meaningful with a package name. + * Skip the detailed fields if package is unknown. */ + _cleanup_free_ char *id = build_package_reference(type, package, version, arch); + fprintf(c->f, " from %s", strnull(id)); + } - if (build_id && !(package && version)) - fprintf(c->f, ", build-id=%s", build_id); + if (build_id && !(package && version)) + fprintf(c->f, ", build-id=%s", build_id); + } fputs("\n", c->f); } |