[Bug 967] New: segfault when adding large sets

bugzilla-daemon at netfilter.org bugzilla-daemon at netfilter.org
Thu Jul 17 21:03:55 CEST 2014


           Summary: segfault when adding large sets
           Product: nftables
           Version: unspecified
          Platform: x86_64
        OS/Version: Debian GNU/Linux
            Status: NEW
          Severity: normal
          Priority: P5
         Component: nft
        AssignedTo: pablo at netfilter.org
        ReportedBy: bugzilla-netfilter at malc.org.uk
   Estimated Hours: 0.0

Created attachment 449
  --> https://bugzilla.netfilter.org/attachment.cgi?id=449
Test case

If I attempt to load a table containing a large set (in my case, a set of 203
or more ether_addrs), nft segfaults (in some cases with what looks to me like a
corrupt stack).  I'm running git head nftables, libnftnl, libmnl on kernel

# Loading a simple table containing just a 203-element set (nft -f test.nft;
input attached):

Program received signal SIGSEGV, Segmentation fault.
nft_set_free (s=0x3f21fcb415fc) at set.c:48
48              if (s->table != NULL)
(gdb) bt
#0  nft_set_free (s=0x3f21fcb415fc) at set.c:48
#1  0x000000000041245f in netlink_add_setelems_compat (expr=0x6499e0,
h=<optimized out>, ctx=0x7fffffffe3a0) at src/netlink.c:1279
#2  netlink_add_setelems (ctx=ctx at entry=0x7fffffffe3a0, h=h at entry=0x649860,
expr=0x6499e0) at src/netlink.c:1295
#3  0x0000000000406e8a in do_add_setelems (expr=<optimized out>, h=0x649860,
ctx=0x7fffffffe3a0) at src/rule.c:577
#4  do_add_set (ctx=ctx at entry=0x7fffffffe3a0, h=h at entry=0x649860,
set=set at entry=0x649850) at src/rule.c:591
#5  0x00000000004070d1 in do_add_table (excl=<optimized out>, table=0x649770,
loc=<optimized out>, h=<optimized out>, ctx=0x7fffffffe3a0)
    at src/rule.c:609
#6  do_command_add (ctx=ctx at entry=0x7fffffffe3a0, cmd=cmd at entry=0x6518a0,
excl=excl at entry=false) at src/rule.c:625
#7  0x0000000000407eea in do_command (ctx=ctx at entry=0x7fffffffe3a0,
cmd=cmd at entry=0x6518a0) at src/rule.c:914
#8  0x0000000000406426 in nft_netlink (msgs=0x7fffffffe430,
state=0x7fffffffe440) at src/main.c:183
#9  nft_run (scanner=scanner at entry=0x645390, state=state at entry=0x7fffffffe440,
msgs=msgs at entry=0x7fffffffe430) at src/main.c:227
#10 0x0000000000405fca in main (argc=3, argv=<optimized out>) at src/main.c:340

# Loading a larger ruleset containing two ~1700-element sets:

Program received signal SIGSEGV, Segmentation fault.
mnl_attr_nest_start (nlh=nlh at entry=0x7fffffffd150, type=type at entry=1) at
535             start->nla_type = NLA_F_NESTED | type;
(gdb) bt
#0  mnl_attr_nest_start (nlh=nlh at entry=0x7fffffffd150, type=type at entry=1) at
#1  0x00007ffff7712f6d in nft_set_elem_nlmsg_build_payload
(nlh=nlh at entry=0x7fffffffd150, e=e at entry=0x6e50c0) at set_elem.c:175
#2  0x00007ffff7713046 in nft_set_elems_nlmsg_build_payload
(nlh=nlh at entry=0x7fffffffd150, s=s at entry=0x6deef0) at set_elem.c:218
#3  0x00000000004194ee in mnl_nft_setelem_add (nf_sock=0x645340, nls=0x6deef0,
flags=<optimized out>) at src/mnl.c:821
#4  0x0001000a80010010 in ?? ()
#5  0x00009472cc431100 in ?? ()
#6  0x8001001080ce0014 in ?? ()
#7  0x736b11000001000a in ?? ()

Configure bugmail: https://bugzilla.netfilter.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.

More information about the netfilter-buglog mailing list