net/tap: avoid memcpy with NULL arg
Checks
Commit Message
Calling memcpy with a null pointer even if zero length is
undefined, so check if data_length is zero.
Problem reported by Gcc analyzer.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/tap/tap_netlink.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Comments
On 8/14/2024 3:34 AM, Stephen Hemminger wrote:
> Calling memcpy with a null pointer even if zero length is
> undefined, so check if data_length is zero.
> Problem reported by Gcc analyzer.
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
>
Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>
Applied to dpdk-next-net/main, thanks.
On 8/19/2024 12:03 PM, Ferruh Yigit wrote:
> On 8/14/2024 3:34 AM, Stephen Hemminger wrote:
>> Calling memcpy with a null pointer even if zero length is
>> undefined, so check if data_length is zero.
>> Problem reported by Gcc analyzer.
>>
Btw, how do you run the GCC analyzer?
Is this something can we add to our CI checks?
>>
>> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
>>
>
> Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>
> Applied to dpdk-next-net/main, thanks.
>
On Mon, 19 Aug 2024 12:04:57 +0100
Ferruh Yigit <ferruh.yigit@amd.com> wrote:
> On 8/19/2024 12:03 PM, Ferruh Yigit wrote:
> > On 8/14/2024 3:34 AM, Stephen Hemminger wrote:
> >> Calling memcpy with a null pointer even if zero length is
> >> undefined, so check if data_length is zero.
> >> Problem reported by Gcc analyzer.
> >>
>
> Btw, how do you run the GCC analyzer?
> Is this something can we add to our CI checks?
I just added it to cflags in meson build.
Tap only had this warning, but mlx5 had lots of warnings.
@@ -302,7 +302,8 @@ tap_nlattr_add(struct nlmsghdr *nh, unsigned short type,
rta = (struct rtattr *)NLMSG_TAIL(nh);
rta->rta_len = RTA_LENGTH(data_len);
rta->rta_type = type;
- memcpy(RTA_DATA(rta), data, data_len);
+ if (data_len > 0)
+ memcpy(RTA_DATA(rta), data, data_len);
nh->nlmsg_len = NLMSG_ALIGN(nh->nlmsg_len) + RTA_ALIGN(rta->rta_len);
}