No description
Find a file
Thomas Haller d65c32a720 link: fix memory leaks due to repeated calls to .io_alloc()
All the io_alloc() implementation unconditionally allocated
new memory, thus leaking memory if called more then once.
Fix io_alloc() implementations not to allocate new memory
if not needed.

This happens for example in link_msg_parser() which first
calls rtnl_link_set_type():

    #0  macvlan_alloc (link=0x609d50) at route/link/macvlan.c:56
    #1  0x00007ffff7b99a78 in rtnl_link_set_type (link=link@entry=0x609d50, type=type@entry=0x609a94 "macvlan") at route/link.c:2233
    #2  0x00007ffff7b99c28 in link_msg_parser (ops=<optimized out>, who=<optimized out>, n=<optimized out>, pp=0x7fffffffd870) at route/link.c:547
    #3  0x00007ffff7dea109 in nl_cache_parse (ops=0x7ffff7dd8600 <rtnl_link_ops>, who=0x603338, nlh=0x6098a0, params=0x7fffffffd870) at cache.c:914
    #4  0x00007ffff7dea15b in update_msg_parser (msg=<optimized out>, arg=<optimized out>) at cache.c:668
    #5  0x00007ffff7def7bf in nl_cb_call (msg=<optimized out>, type=<optimized out>, cb=<optimized out>) at ../include/netlink-private/netlink.h:142
    #6  recvmsgs (cb=0x6057a0, sk=0x6034c0) at nl.c:952
    #7  nl_recvmsgs_report (sk=sk@entry=0x6034c0, cb=cb@entry=0x6057a0) at nl.c:1003
    #8  0x00007ffff7defb79 in nl_recvmsgs (sk=sk@entry=0x6034c0, cb=cb@entry=0x6057a0) at nl.c:1027
    #9  0x00007ffff7de9668 in __cache_pickup (sk=0x6034c0, cache=0x603510, param=param@entry=0x7fffffffd870) at cache.c:701
    #10 0x00007ffff7dea08d in nl_cache_pickup (sk=<optimized out>, cache=<optimized out>) at cache.c:753
    #11 0x0000000000400d56 in main ()

and later ops->io_parse():

    #0  macvlan_alloc (link=0x609d50) at route/link/macvlan.c:56
    #1  0x00007ffff7baae9d in macvlan_parse (link=0x609d50, data=<optimized out>, xstats=<optimized out>) at route/link/macvlan.c:79
    #2  0x00007ffff7b99c80 in link_msg_parser (ops=<optimized out>, who=<optimized out>, n=<optimized out>, pp=0x7fffffffd870) at route/link.c:567
    #3  0x00007ffff7dea109 in nl_cache_parse (ops=0x7ffff7dd8600 <rtnl_link_ops>, who=0x603338, nlh=0x6098a0, params=0x7fffffffd870) at cache.c:914
    #4  0x00007ffff7dea15b in update_msg_parser (msg=<optimized out>, arg=<optimized out>) at cache.c:668
    #5  0x00007ffff7def7bf in nl_cb_call (msg=<optimized out>, type=<optimized out>, cb=<optimized out>) at ../include/netlink-private/netlink.h:142
    #6  recvmsgs (cb=0x6057a0, sk=0x6034c0) at nl.c:952
    #7  nl_recvmsgs_report (sk=sk@entry=0x6034c0, cb=cb@entry=0x6057a0) at nl.c:1003
    #8  0x00007ffff7defb79 in nl_recvmsgs (sk=sk@entry=0x6034c0, cb=cb@entry=0x6057a0) at nl.c:1027
    #9  0x00007ffff7de9668 in __cache_pickup (sk=0x6034c0, cache=0x603510, param=param@entry=0x7fffffffd870) at cache.c:701
    #10 0x00007ffff7dea08d in nl_cache_pickup (sk=<optimized out>, cache=<optimized out>) at cache.c:753
    #11 0x0000000000400d56 in main ()

https://github.com/thom311/libnl/issues/59

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-10-12 19:35:46 +02:00
.travis travis-ci: run make check in travis build 2014-08-26 14:15:36 +02:00
doc libnl-3.2.25 release 2014-07-16 11:19:12 +02:00
etc pktloc: support to specify a shift operator for packet locations 2010-11-04 20:01:36 +01:00
include link/inet6: add support for tokenized interface identifiers 2014-10-08 16:47:43 +02:00
lib link: fix memory leaks due to repeated calls to .io_alloc() 2014-10-12 19:35:46 +02:00
m4 doc: Check documentation generation requirements with autoconf 2012-05-09 10:06:24 +02:00
man genl: Update genl-ctrl-list(8) 2012-06-01 13:10:03 +02:00
python Use paths relative to srcdir in setup.py. 2014-05-25 12:51:32 +02:00
src build: move copy of linux headers to private directory 2014-09-24 16:00:31 +02:00
tests build: move copy of linux headers to private directory 2014-09-24 16:00:31 +02:00
.gitignore gitignore: ignore patch files 2014-04-16 10:08:47 +02:00
.indent.pro style: add .indent.pro file for GNU indent 2014-07-27 10:57:36 +02:00
.travis.yml build: Add continuous integration support via travis-ci 2014-08-26 12:41:38 +02:00
autogen.sh build: let autogen.sh script change into top source directory 2014-07-07 11:12:38 +02:00
ChangeLog libnl 3.2.10 2012-06-06 11:43:53 +02:00
configure.ac build: generate libnl-idiag-3.0.pc 2014-09-22 11:06:05 +02:00
COPYING Update COPYING to fix FSF address 2012-01-17 12:38:37 +01:00
libnl-3.0.pc.in Switch to libtool versioning system 2011-09-13 22:58:08 +02:00
libnl-cli-3.0.pc.in Add libnl-cli-3.0 to pkg-config tool 2011-10-10 11:39:24 +02:00
libnl-genl-3.0.pc.in Switch to libtool versioning system 2011-09-13 22:58:08 +02:00
libnl-idiag-3.0.pc.in Add support for inet diag Netlink protocol. 2013-07-19 02:06:21 -07:00
libnl-nf-3.0.pc.in Switch to libtool versioning system 2011-09-13 22:58:08 +02:00
libnl-route-3.0.pc.in Switch to libtool versioning system 2011-09-13 22:58:08 +02:00
libnl-xfrm-3.0.pc.in xfrm: add xfrm support 2014-07-20 18:14:46 +02:00
libnl.sym.in lib/socket: retry generate local port in nl_connect on ADDRINUSE 2014-05-06 14:34:58 +02:00
Makefile.am build: generate libnl-idiag-3.0.pc 2014-09-22 11:06:05 +02:00