]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
json: make JSON_BUILD_PAIR_IN_ADDR_NON_NULL or friends handle NULL gracefully
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 29 Nov 2021 23:04:54 +0000 (08:04 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 30 Nov 2021 01:03:51 +0000 (10:03 +0900)
Fixes #21567.

src/shared/json.c

index 8d9a90203ae97144e178f885a35dc9b1fd48074a..0f862794327d47929487b2099eba0af6eb3bd3c9 100644 (file)
@@ -3985,7 +3985,7 @@ int json_buildv(JsonVariant **ret, va_list ap) {
                         n = va_arg(ap, const char *);
                         a = va_arg(ap, const struct in_addr *);
 
-                        if (in4_addr_is_set(a) && current->n_suppress == 0) {
+                        if (a && in4_addr_is_set(a) && current->n_suppress == 0) {
                                 r = json_variant_new_string(&add, n);
                                 if (r < 0)
                                         goto finish;
@@ -4013,7 +4013,7 @@ int json_buildv(JsonVariant **ret, va_list ap) {
                         n = va_arg(ap, const char *);
                         a = va_arg(ap, const struct in6_addr *);
 
-                        if (in6_addr_is_set(a) && current->n_suppress == 0) {
+                        if (a && in6_addr_is_set(a) && current->n_suppress == 0) {
                                 r = json_variant_new_string(&add, n);
                                 if (r < 0)
                                         goto finish;
@@ -4043,7 +4043,7 @@ int json_buildv(JsonVariant **ret, va_list ap) {
                         a = va_arg(ap, const union in_addr_union *);
                         f = va_arg(ap, int);
 
-                        if (in_addr_is_set(f, a) && current->n_suppress == 0) {
+                        if (a && in_addr_is_set(f, a) && current->n_suppress == 0) {
                                 r = json_variant_new_string(&add, n);
                                 if (r < 0)
                                         goto finish;
@@ -4071,7 +4071,7 @@ int json_buildv(JsonVariant **ret, va_list ap) {
                         n = va_arg(ap, const char *);
                         a = va_arg(ap, const struct ether_addr *);
 
-                        if (!ether_addr_is_null(a) && current->n_suppress == 0) {
+                        if (a && !ether_addr_is_null(a) && current->n_suppress == 0) {
                                 r = json_variant_new_string(&add, n);
                                 if (r < 0)
                                         goto finish;
@@ -4099,7 +4099,7 @@ int json_buildv(JsonVariant **ret, va_list ap) {
                         n = va_arg(ap, const char *);
                         a = va_arg(ap, const struct hw_addr_data *);
 
-                        if (!hw_addr_is_null(a) && current->n_suppress == 0) {
+                        if (a && !hw_addr_is_null(a) && current->n_suppress == 0) {
                                 r = json_variant_new_string(&add, n);
                                 if (r < 0)
                                         goto finish;