From: Zbigniew Jędrzejewski-Szmek Date: Wed, 14 Apr 2021 21:30:27 +0000 (+0200) Subject: libsystemd-network: check that errno==0 is not passed to log functions X-Git-Tag: v249-rc1~407^2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=00dd6d77702e5e8148cced2ed3d028cae9788919;p=thirdparty%2Fsystemd.git libsystemd-network: check that errno==0 is not passed to log functions --- diff --git a/src/libsystemd-network/dhcp-internal.h b/src/libsystemd-network/dhcp-internal.h index ee2ce2b2509..e5be7c5a63b 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 67c1cf4605a..b905791f3c2 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 2b61a7bb3b7..1e5a6b0e377 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 8846fa5323f..cf0578c5c29 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 490305c3293..d43b5753526 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 7586ce67555..209425548ba 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 a2f3ab4921c..b4af60741a1 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 448449059ef..8053afee938 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 20eab4cc045..51eaa0c06e2 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':