From f501c2515125e4251058ff68d98618f07e85544f Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 16 Dec 2019 18:40:36 +0900 Subject: [PATCH 1/2] sd-netlink: make netlink_container_parse() takes size_t for rt_len And use another unsigned short variable for RTA_OK() macro. --- src/libsystemd/sd-netlink/netlink-message.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/libsystemd/sd-netlink/netlink-message.c b/src/libsystemd/sd-netlink/netlink-message.c index 3679819f2d..fc578cf536 100644 --- a/src/libsystemd/sd-netlink/netlink-message.c +++ b/src/libsystemd/sd-netlink/netlink-message.c @@ -864,7 +864,7 @@ int sd_netlink_message_read_strv(sd_netlink_message *m, unsigned short container const NLType *nl_type; struct rtattr *rta; void *container; - unsigned short rt_len; + size_t rt_len; int r; assert_return(m, -EINVAL); @@ -896,10 +896,14 @@ int sd_netlink_message_read_strv(sd_netlink_message *m, unsigned short container if (r < 0) return r; - rt_len = (unsigned short) r; + rt_len = (size_t) r; rta = container; - for (; RTA_OK(rta, rt_len); rta = RTA_NEXT(rta, rt_len)) { + /* RTA_OK() macro compares with rta->rt_len, which is unsigned short, and + * LGTM.com analysis does not like the type difference. Hence, here we + * introduce an unsigned short variable as a workaround. */ + unsigned short len = rt_len; + for (; RTA_OK(rta, len); rta = RTA_NEXT(rta, len)) { unsigned short type; type = RTA_TYPE(rta); @@ -918,11 +922,15 @@ int sd_netlink_message_read_strv(sd_netlink_message *m, unsigned short container static int netlink_container_parse(sd_netlink_message *m, struct netlink_container *container, struct rtattr *rta, - unsigned rt_len) { + size_t rt_len) { _cleanup_free_ struct netlink_attribute *attributes = NULL; size_t n_allocated = 0; - for (; RTA_OK(rta, rt_len); rta = RTA_NEXT(rta, rt_len)) { + /* RTA_OK() macro compares with rta->rt_len, which is unsigned short, and + * LGTM.com analysis does not like the type difference. Hence, here we + * introduce an unsigned short variable as a workaround. */ + unsigned short len = rt_len; + for (; RTA_OK(rta, len); rta = RTA_NEXT(rta, len)) { unsigned short type; type = RTA_TYPE(rta); From 6d185cffb196eb4b9881ec08b6ec1550a57e7e13 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 16 Dec 2019 18:42:25 +0900 Subject: [PATCH 2/2] sd-netlink: add a whitespce between cast operator and variable --- src/libsystemd/sd-netlink/netlink-message.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/libsystemd/sd-netlink/netlink-message.c b/src/libsystemd/sd-netlink/netlink-message.c index fc578cf536..247868221d 100644 --- a/src/libsystemd/sd-netlink/netlink-message.c +++ b/src/libsystemd/sd-netlink/netlink-message.c @@ -757,7 +757,7 @@ int sd_netlink_message_read_u32(sd_netlink_message *m, unsigned short type, uint r = netlink_message_read_internal(m, type, &attr_data, &net_byteorder); if (r < 0) return r; - else if ((size_t)r < sizeof(uint32_t)) + else if ((size_t) r < sizeof(uint32_t)) return -EIO; if (data) { @@ -783,7 +783,7 @@ int sd_netlink_message_read_ether_addr(sd_netlink_message *m, unsigned short typ r = netlink_message_read_internal(m, type, &attr_data, NULL); if (r < 0) return r; - else if ((size_t)r < sizeof(struct ether_addr)) + else if ((size_t) r < sizeof(struct ether_addr)) return -EIO; if (data) @@ -805,7 +805,7 @@ int sd_netlink_message_read_cache_info(sd_netlink_message *m, unsigned short typ r = netlink_message_read_internal(m, type, &attr_data, NULL); if (r < 0) return r; - else if ((size_t)r < sizeof(struct ifa_cacheinfo)) + else if ((size_t) r < sizeof(struct ifa_cacheinfo)) return -EIO; if (info) @@ -827,7 +827,7 @@ int sd_netlink_message_read_in_addr(sd_netlink_message *m, unsigned short type, r = netlink_message_read_internal(m, type, &attr_data, NULL); if (r < 0) return r; - else if ((size_t)r < sizeof(struct in_addr)) + else if ((size_t) r < sizeof(struct in_addr)) return -EIO; if (data) @@ -849,7 +849,7 @@ int sd_netlink_message_read_in6_addr(sd_netlink_message *m, unsigned short type, r = netlink_message_read_internal(m, type, &attr_data, NULL); if (r < 0) return r; - else if ((size_t)r < sizeof(struct in6_addr)) + else if ((size_t) r < sizeof(struct in6_addr)) return -EIO; if (data) @@ -1029,8 +1029,7 @@ int sd_netlink_message_enter_container(sd_netlink_message *m, unsigned short typ if (r < 0) return r; - size = (size_t)r; - + size = (size_t) r; m->n_containers++; r = netlink_container_parse(m, @@ -1060,7 +1059,6 @@ int sd_netlink_message_enter_array(sd_netlink_message *m, unsigned short type_id return r; size = (size_t) r; - m->n_containers++; r = netlink_container_parse(m,