Commit 3f1e53ab authored by Florian Westphal's avatar Florian Westphal Committed by Pablo Neira Ayuso

netfilter: ebtables: don't attempt to allocate 0-sized compat array

Dmitry reports 32bit ebtables on 64bit kernel got broken by
a recent change that returns -EINVAL when ruleset has no entries.

ebtables however only counts user-defined chains, so for the
initial table nentries will be 0.

Don't try to allocate the compat array in this case, as no user
defined rules exist no rule will need 64bit translation.
Reported-by: default avatarDmitry Vyukov <dvyukov@google.com>
Fixes: 7d7d7e02 ("netfilter: compat: reject huge allocation requests")
Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent 5c64576a
...@@ -1825,13 +1825,14 @@ static int compat_table_info(const struct ebt_table_info *info, ...@@ -1825,13 +1825,14 @@ static int compat_table_info(const struct ebt_table_info *info,
{ {
unsigned int size = info->entries_size; unsigned int size = info->entries_size;
const void *entries = info->entries; const void *entries = info->entries;
int ret;
newinfo->entries_size = size; newinfo->entries_size = size;
if (info->nentries) {
ret = xt_compat_init_offsets(NFPROTO_BRIDGE, info->nentries); int ret = xt_compat_init_offsets(NFPROTO_BRIDGE,
if (ret) info->nentries);
return ret; if (ret)
return ret;
}
return EBT_ENTRY_ITERATE(entries, size, compat_calc_entry, info, return EBT_ENTRY_ITERATE(entries, size, compat_calc_entry, info,
entries, newinfo); entries, newinfo);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment