Skip to content
  • Pablo Neira Ayuso's avatar
    netfilter: nf_tables: reject loops from set element jump to chain · 8588ac09
    Pablo Neira Ayuso authored
    
    
    Liping Zhang says:
    
    "Users may add such a wrong nft rules successfully, which will cause an
    endless jump loop:
    
      # nft add rule filter test tcp dport vmap {1: jump test}
    
    This is because before we commit, the element in the current anonymous
    set is inactive, so osp->walk will skip this element and miss the
    validate check."
    
    To resolve this problem, this patch passes the generation mask to the
    walk function through the iter container structure depending on the code
    path:
    
    1) If we're dumping the elements, then we have to check if the element
       is active in the current generation. Thus, we check for the current
       bit in the genmask.
    
    2) If we're checking for loops, then we have to check if the element is
       active in the next generation, as we're in the middle of a
       transaction. Thus, we check for the next bit in the genmask.
    
    Based on original patch from Liping Zhang.
    
    Reported-by: default avatarLiping Zhang <liping.zhang@spreadtrum.com>
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    Tested-by: default avatarLiping Zhang <liping.zhang@spreadtrum.com>
    8588ac09