From 00dd6d77702e5e8148cced2ed3d028cae9788919 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 14 Apr 2021 23:30:27 +0200 Subject: [PATCH] libsystemd-network: check that errno==0 is not passed to log functions --- src/libsystemd-network/dhcp-internal.h | 7 +++++-- src/libsystemd-network/dhcp-server-internal.h | 7 +++++-- src/libsystemd-network/dhcp6-internal.h | 7 +++++-- src/libsystemd-network/lldp-internal.h | 7 +++++-- src/libsystemd-network/ndisc-internal.h | 7 +++++-- src/libsystemd-network/radv-internal.h | 7 +++++-- src/libsystemd-network/sd-ipv4acd.c | 7 +++++-- src/libsystemd-network/sd-ipv4ll.c | 7 +++++-- src/shared/log-link.h | 7 +++++++ 9 files changed, 47 insertions(+), 16 deletions(-) diff --git a/src/libsystemd-network/dhcp-internal.h b/src/libsystemd-network/dhcp-internal.h index ee2ce2b250..e5be7c5a63 100644 --- a/src/libsystemd-network/dhcp-internal.h +++ b/src/libsystemd-network/dhcp-internal.h @@ -67,9 +67,12 @@ int dhcp_packet_verify_headers(DHCPPacket *packet, size_t len, bool checksum, ui _cleanup_(sd_dhcp_client_unrefp) _unused_ sd_dhcp_client *_dont_destroy_##client = sd_dhcp_client_ref(client) #define log_dhcp_client_errno(client, error, fmt, ...) \ - log_interface_prefix_full_errno_zerook( \ + log_interface_prefix_full_errno( \ "DHCPv4 client: ", \ sd_dhcp_client_get_ifname(client), \ error, fmt, ##__VA_ARGS__) #define log_dhcp_client(client, fmt, ...) \ - log_dhcp_client_errno(client, 0, fmt, ##__VA_ARGS__) + log_interface_prefix_full_errno_zerook( \ + "DHCPv4 client: ", \ + sd_dhcp_client_get_ifname(client), \ + 0, fmt, ##__VA_ARGS__) diff --git a/src/libsystemd-network/dhcp-server-internal.h b/src/libsystemd-network/dhcp-server-internal.h index 67c1cf4605..b905791f3c 100644 --- a/src/libsystemd-network/dhcp-server-internal.h +++ b/src/libsystemd-network/dhcp-server-internal.h @@ -99,9 +99,12 @@ void client_id_hash_func(const DHCPClientId *p, struct siphash *state); int client_id_compare_func(const DHCPClientId *a, const DHCPClientId *b); #define log_dhcp_server_errno(server, error, fmt, ...) \ - log_interface_prefix_full_errno_zerook( \ + log_interface_prefix_full_errno( \ "DHCPv4 server: ", \ sd_dhcp_server_get_ifname(server), \ error, fmt, ##__VA_ARGS__) #define log_dhcp_server(server, fmt, ...) \ - log_dhcp_server_errno(server, 0, fmt, ##__VA_ARGS__) + log_interface_prefix_full_errno_zerook( \ + "DHCPv4 server: ", \ + sd_dhcp_server_get_ifname(server), \ + 0, fmt, ##__VA_ARGS__) diff --git a/src/libsystemd-network/dhcp6-internal.h b/src/libsystemd-network/dhcp6-internal.h index 2b61a7bb3b..1e5a6b0e37 100644 --- a/src/libsystemd-network/dhcp6-internal.h +++ b/src/libsystemd-network/dhcp6-internal.h @@ -120,9 +120,12 @@ const char *dhcp6_message_status_to_string(int s) _const_; int dhcp6_message_status_from_string(const char *s) _pure_; #define log_dhcp6_client_errno(client, error, fmt, ...) \ - log_interface_prefix_full_errno_zerook( \ + log_interface_prefix_full_errno( \ "DHCPv6 client: ", \ sd_dhcp6_client_get_ifname(client), \ error, fmt, ##__VA_ARGS__) #define log_dhcp6_client(client, fmt, ...) \ - log_dhcp6_client_errno(client, 0, fmt, ##__VA_ARGS__) + log_interface_prefix_full_errno_zerook( \ + "DHCPv6 client: ", \ + sd_dhcp6_client_get_ifname(client), \ + 0, fmt, ##__VA_ARGS__) diff --git a/src/libsystemd-network/lldp-internal.h b/src/libsystemd-network/lldp-internal.h index 8846fa5323..cf0578c5c2 100644 --- a/src/libsystemd-network/lldp-internal.h +++ b/src/libsystemd-network/lldp-internal.h @@ -37,9 +37,12 @@ const char* lldp_event_to_string(sd_lldp_event_t e) _const_; sd_lldp_event_t lldp_event_from_string(const char *s) _pure_; #define log_lldp_errno(lldp, error, fmt, ...) \ - log_interface_prefix_full_errno_zerook( \ + log_interface_prefix_full_errno( \ "LLDP: ", \ sd_lldp_get_ifname(lldp), \ error, fmt, ##__VA_ARGS__) #define log_lldp(lldp, fmt, ...) \ - log_lldp_errno(lldp, 0, fmt, ##__VA_ARGS__) + log_interface_prefix_full_errno_zerook( \ + "LLDP: ", \ + sd_lldp_get_ifname(lldp), \ + 0, fmt, ##__VA_ARGS__) diff --git a/src/libsystemd-network/ndisc-internal.h b/src/libsystemd-network/ndisc-internal.h index 490305c329..d43b575352 100644 --- a/src/libsystemd-network/ndisc-internal.h +++ b/src/libsystemd-network/ndisc-internal.h @@ -42,9 +42,12 @@ const char* ndisc_event_to_string(sd_ndisc_event_t e) _const_; sd_ndisc_event_t ndisc_event_from_string(const char *s) _pure_; #define log_ndisc_errno(ndisc, error, fmt, ...) \ - log_interface_prefix_full_errno_zerook( \ + log_interface_prefix_full_errno( \ "NDISC: ", \ sd_ndisc_get_ifname(ndisc), \ error, fmt, ##__VA_ARGS__) #define log_ndisc(ndisc, fmt, ...) \ - log_ndisc_errno(ndisc, 0, fmt, ##__VA_ARGS__) + log_interface_prefix_full_errno_zerook( \ + "NDISC: ", \ + sd_ndisc_get_ifname(ndisc), \ + 0, fmt, ##__VA_ARGS__) diff --git a/src/libsystemd-network/radv-internal.h b/src/libsystemd-network/radv-internal.h index 7586ce6755..209425548b 100644 --- a/src/libsystemd-network/radv-internal.h +++ b/src/libsystemd-network/radv-internal.h @@ -126,9 +126,12 @@ struct sd_radv_route_prefix { }; #define log_radv_errno(radv, error, fmt, ...) \ - log_interface_prefix_full_errno_zerook( \ + log_interface_prefix_full_errno( \ "RADV: ", \ sd_radv_get_ifname(radv), \ error, fmt, ##__VA_ARGS__) #define log_radv(radv, fmt, ...) \ - log_radv_errno(radv, 0, fmt, ##__VA_ARGS__) + log_interface_prefix_full_errno_zerook( \ + "RADV: ", \ + sd_radv_get_ifname(radv), \ + 0, fmt, ##__VA_ARGS__) diff --git a/src/libsystemd-network/sd-ipv4acd.c b/src/libsystemd-network/sd-ipv4acd.c index a2f3ab4921..b4af60741a 100644 --- a/src/libsystemd-network/sd-ipv4acd.c +++ b/src/libsystemd-network/sd-ipv4acd.c @@ -76,12 +76,15 @@ struct sd_ipv4acd { }; #define log_ipv4acd_errno(acd, error, fmt, ...) \ - log_interface_prefix_full_errno_zerook( \ + log_interface_prefix_full_errno( \ "IPv4ACD: ", \ sd_ipv4acd_get_ifname(acd), \ error, fmt, ##__VA_ARGS__) #define log_ipv4acd(acd, fmt, ...) \ - log_ipv4acd_errno(acd, 0, fmt, ##__VA_ARGS__) + log_interface_prefix_full_errno_zerook( \ + "IPv4ACD: ", \ + sd_ipv4acd_get_ifname(acd), \ + 0, fmt, ##__VA_ARGS__) static const char * const ipv4acd_state_table[_IPV4ACD_STATE_MAX] = { [IPV4ACD_STATE_INIT] = "init", diff --git a/src/libsystemd-network/sd-ipv4ll.c b/src/libsystemd-network/sd-ipv4ll.c index 448449059e..8053afee93 100644 --- a/src/libsystemd-network/sd-ipv4ll.c +++ b/src/libsystemd-network/sd-ipv4ll.c @@ -50,12 +50,15 @@ struct sd_ipv4ll { }; #define log_ipv4ll_errno(ll, error, fmt, ...) \ - log_interface_prefix_full_errno_zerook( \ + log_interface_prefix_full_errno( \ "IPv4LL: ", \ sd_ipv4ll_get_ifname(ll), \ error, fmt, ##__VA_ARGS__) #define log_ipv4ll(ll, fmt, ...) \ - log_ipv4ll_errno(ll, 0, fmt, ##__VA_ARGS__) + log_interface_prefix_full_errno_zerook( \ + "IPv4LL: ", \ + sd_ipv4ll_get_ifname(ll), \ + 0, fmt, ##__VA_ARGS__) static void ipv4ll_on_acd(sd_ipv4acd *ll, int event, void *userdata); diff --git a/src/shared/log-link.h b/src/shared/log-link.h index 20eab4cc04..51eaa0c06e 100644 --- a/src/shared/log-link.h +++ b/src/shared/log-link.h @@ -28,6 +28,13 @@ -ERRNO_VALUE(_e); \ }) +#define log_interface_prefix_full_errno(prefix, ifname_expr, error, fmt, ...) \ + ({ \ + int _error = (error); \ + ASSERT_NON_ZERO(_error); \ + log_interface_prefix_full_errno_zerook(prefix, ifname_expr, _error, fmt, ##__VA_ARGS__); \ + }) + /* * The following macros append INTERFACE= to the message. * The macros require a struct named 'Link' which contains 'char *ifname':