Go to file
Lahav Schlesinger 0faec4d050 libnetlink: Fix memory leak in __rtnl_talk_iov()
If `__rtnl_talk_iov` fails then callers are not expected to free `answer`.

Currently if `NLMSG_ERROR` was received with an error then the netlink
buffer was stored in `answer`, while still returning an error

This leak can be observed by running this snippet over time.
This triggers an `NLMSG_ERROR` because for each neighbour update, `ip`
will try to query for the name of interface 9999 in the wrong netns.
(which in itself is a separate bug)

 set -e

 ip netns del test-a || true
 ip netns add test-a
 ip netns del test-b || true
 ip netns add test-b

 ip -n test-a netns set test-b auto
 ip -n test-a link add veth_a index 9999 type veth \
  peer name veth_b netns test-b
 ip -n test-b link set veth_b up

 ip -n test-a monitor link address prefix neigh nsid label all-nsid \
  > /dev/null &
 monitor_pid=$!
 clean() {
  kill $monitor_pid
  ip netns del test-a
  ip netns del test-b
 }
 trap clean EXIT

 while true; do
  ip -n test-b neigh add dev veth_b 1.2.3.4 lladdr AA:AA:AA:AA:AA:AA
  ip -n test-b neigh del dev veth_b 1.2.3.4
 done

Fixes: 55870dfe7f ("Improve batch and dump times by caching link lookups")
Signed-off-by: Lahav Schlesinger <lschlesinger@drivenets.com>
Signed-off-by: Gilad Naaman <gnaaman@drivenets.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
2022-12-09 10:03:45 -08:00
bash-completion devlink: add support for running selftests 2022-08-04 12:34:28 -06:00
bridge bridge: Do not print stray prefixes in monitor mode 2022-09-30 12:36:40 -07:00
dcb dcb: unblock mnl_socket_recvfrom if not message received 2022-10-20 15:55:44 -07:00
devlink devlink: Fix setting parent for 'rate add' 2022-12-04 09:56:35 -08:00
doc/actions doc: fix 'infact' --> 'in fact' typo 2022-05-13 16:34:09 -07:00
etc/iproute2 Add Open/R to rt_protos 2021-03-30 03:04:09 +00:00
examples/bpf examples/bpf: add bpf examples with BTF defined maps 2020-11-24 22:14:08 -07:00
genl genl: remove unused vars in Makefile 2022-10-26 08:53:02 -07:00
include uapi: update for in.h and ip.h 2022-11-22 11:33:49 -08:00
ip ip: fix return value for rtnl_talk failures 2022-11-28 08:42:31 -08:00
lib libnetlink: Fix memory leak in __rtnl_talk_iov() 2022-12-09 10:03:45 -08:00
man ss: man: add missing entries for TIPC 2022-10-20 15:59:57 -07:00
misc ss: re-add TIPC query support 2022-10-20 15:59:57 -07:00
netem doc: remove trailing whitespace 2018-12-19 12:02:38 -08:00
rdma uapi: update headers from 6.0-rc1 2022-08-14 19:25:21 -07:00
schema bridge: add json schema for bridge fdb show 2016-07-20 12:02:02 -07:00
tc tc: ct: Fix invalid pointer dereference 2022-12-07 08:56:30 -08:00
testsuite testsuite: fix build failure 2022-10-26 08:52:02 -07:00
tipc tipc: fix keylen check 2022-05-17 12:57:45 -07:00
vdpa uapi: update from 6.1 pre rc1 2022-10-11 07:17:52 -07:00
.clang-format clang-format: add configuration file 2019-01-17 13:38:23 -08:00
.gitignore Remove leftovers from removed Latex documentation 2018-02-13 16:43:19 -08:00
.mailmap mailmap: map David's mail address 2019-05-15 09:50:42 -07:00
configure configure: Define _GNU_SOURCE when checking for setns 2022-08-12 08:21:09 -07:00
COPYING Update address of FSF in license 2008-03-08 13:31:03 -08:00
Makefile Makefile: move HAVE_MNL check to top-level Makefile 2022-03-12 09:00:56 -07:00
README README: remove doc instructions 2021-03-20 09:29:02 -07:00
README.devel README: update location of git repositories, remove broken info link 2018-02-13 16:42:51 -08:00

This is a set of utilities for Linux networking.

Information:
    https://wiki.linuxfoundation.org/networking/iproute2

Download:
    http://www.kernel.org/pub/linux/utils/net/iproute2/

Stable version repository:
    git://git.kernel.org/pub/scm/network/iproute2/iproute2.git

Development repository:
    git://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git

How to compile this.
--------------------
1. libdbm

arpd needs to have the berkeleydb development libraries. For Debian
users this is the package with a name like libdbX.X-dev.
DBM_INCLUDE points to the directory with db_185.h which
is the include file used by arpd to get to the old format Berkeley
database routines.  Often this is in the db-devel package.

2. make

The makefile will automatically build a config.mk file which
contains definitions of libraries that may or may not be available
on the system such as: ATM, ELF, MNL, and SELINUX.

3. include/uapi

This package includes matching sanitized kernel headers because
the build environment may not have up to date versions. See Makefile
if you have special requirements and need to point at different
kernel include files.

Stephen Hemminger
stephen@networkplumber.org

Alexey Kuznetsov
kuznet@ms2.inr.ac.ru