From: Yu Watanabe Date: Sun, 14 Nov 2021 05:53:36 +0000 (+0900) Subject: network: json: make {network,device}_build_json() accept NULL X-Git-Tag: v250-rc1~143^2~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=165e71994809cb0cd61bd05e30021b46945795c8;p=thirdparty%2Fsystemd.git network: json: make {network,device}_build_json() accept NULL --- diff --git a/src/network/networkd-json.c b/src/network/networkd-json.c index cd39a8149ae..e8e6daf0925 100644 --- a/src/network/networkd-json.c +++ b/src/network/networkd-json.c @@ -8,9 +8,13 @@ #include "sort-util.h" static int network_build_json(Network *network, JsonVariant **ret) { - assert(network); assert(ret); + if (!network) { + *ret = NULL; + return 0; + } + return json_build(ret, JSON_BUILD_OBJECT( JSON_BUILD_PAIR_STRING("NetworkFile", network->filename))); } @@ -18,9 +22,13 @@ static int network_build_json(Network *network, JsonVariant **ret) { static int device_build_json(sd_device *device, JsonVariant **ret) { const char *link = NULL, *path = NULL, *vendor = NULL, *model = NULL; - assert(device); assert(ret); + if (!device) { + *ret = NULL; + return 0; + } + (void) sd_device_get_property_value(device, "ID_NET_LINK_FILE", &link); (void) sd_device_get_property_value(device, "ID_PATH", &path); @@ -38,7 +46,7 @@ static int device_build_json(sd_device *device, JsonVariant **ret) { } int link_build_json(Link *link, JsonVariant **ret) { - _cleanup_(json_variant_unrefp) JsonVariant *v = NULL; + _cleanup_(json_variant_unrefp) JsonVariant *v = NULL, *w = NULL; _cleanup_free_ char *type = NULL; int r; @@ -65,29 +73,23 @@ int link_build_json(Link *link, JsonVariant **ret) { if (r < 0) return r; - if (link->network) { - _cleanup_(json_variant_unrefp) JsonVariant *w = NULL; - - r = network_build_json(link->network, &w); - if (r < 0) - return r; + r = network_build_json(link->network, &w); + if (r < 0) + return r; - r = json_variant_merge(&v, w); - if (r < 0) - return r; - } + r = json_variant_merge(&v, w); + if (r < 0) + return r; - if (link->sd_device) { - _cleanup_(json_variant_unrefp) JsonVariant *w = NULL; + w = json_variant_unref(w); - r = device_build_json(link->sd_device, &w); - if (r < 0) - return r; + r = device_build_json(link->sd_device, &w); + if (r < 0) + return r; - r = json_variant_merge(&v, w); - if (r < 0) - return r; - } + r = json_variant_merge(&v, w); + if (r < 0) + return r; *ret = TAKE_PTR(v); return 0;