diff options
author | Ed Maste <emaste@FreeBSD.org> | 2023-03-06 16:30:26 +0000 |
---|---|---|
committer | Ed Maste <emaste@FreeBSD.org> | 2023-03-06 18:10:29 +0000 |
commit | 305aaa93e0c805294c8bcbb5fe8b9f7caa28b349 (patch) | |
tree | 85aeefdd720b1088bb92074cf2c012f4aaeec1a6 | |
parent | d8644a5d2458588dd7d8e44bd23c6cacaead19b7 (diff) | |
download | src-305aaa93e0c805294c8bcbb5fe8b9f7caa28b349.tar.gz src-305aaa93e0c805294c8bcbb5fe8b9f7caa28b349.zip |
netlink: do not memcpy 0 bytes from a NULL pointer
Although it works in practice it is UB, and might break after a future
compiler update.
This was rewritten in main and the memcpy call no longer exists, so this
is a direct commit to stable/13 before 055776c84a41 is MFC'd.
Discussed with: melifaro
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D38927
-rw-r--r-- | sys/netlink/route/iface.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/netlink/route/iface.c b/sys/netlink/route/iface.c index 96f21a79a369..3ddef06bed7e 100644 --- a/sys/netlink/route/iface.c +++ b/sys/netlink/route/iface.c @@ -458,8 +458,11 @@ rtnl_handle_getlink(struct nlmsghdr *hdr, struct nlpcb *nlp, struct nl_pstate *n error = ENOMEM; break; } - memcpy(new_array, match_array, offset * sizeof(void *)); - free(match_array, M_TEMP); + if (match_array != NULL) { + memcpy(new_array, match_array, + offset * sizeof(void *)); + free(match_array, M_TEMP); + } match_array = new_array; } |