diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2014-05-28 10:27:01 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2014-05-28 10:28:43 +0200 |
commit | 06f3a71b0e79fcad96cd0e7c4b395bc52a3d3d1b (patch) | |
tree | 6fba6b282ed8cad6ccb53407c6c467d249558192 /src/netlink.c | |
parent | 6ae104c470eba0f8ccd78177235cb5bc724a39f3 (diff) |
netlink: fix crash if kernel doesn't support nfnetlink / nf_tables
When trying to close a descriptor which failed to be opened.
==6231== Process terminating with default action of signal 11 (SIGSEGV)
==6231== Access not within mapped region at address 0x0
==6231== at 0x5503E21: mnl_socket_close (socket.c:248)
==6231== by 0x40517F: netlink_close_sock (netlink.c:68)
==6231== by 0x400EFEE: _dl_fini (dl-fini.c:253)
==6231== by 0x5740AA0: __run_exit_handlers (exit.c:77)
==6231== by 0x5740B24: exit (exit.c:99)
==6231== by 0x40F16F: netlink_open_error (netlink.c:105)
==6231== by 0x405642: netlink_open_sock (netlink.c:54)
==6231== by 0x424E6C: __libc_csu_init (in /usr/sbin/nft)
==6231== by 0x5728924: (below main) (libc-start.c:219)
==6231== If you believe this happened as a result of a stack
==6231== overflow in your program's main thread (unlikely but
==6231== possible), you can try to increase the size of the
==6231== main thread stack using the --main-stacksize= flag.
==6231== The main thread stack size used in this run was 8388608.
Closes: http://bugzilla.netfilter.org/show_bug.cgi?id=881
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/netlink.c')
-rw-r--r-- | src/netlink.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/netlink.c b/src/netlink.c index db42884c..edefc76f 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -64,7 +64,8 @@ static void __init netlink_open_sock(void) static void __exit netlink_close_sock(void) { - mnl_socket_close(nf_sock); + if (nf_sock) + mnl_socket_close(nf_sock); if (nf_mon_sock) mnl_socket_close(nf_mon_sock); } |