netfilter: allow to turn off xtables compat layer
The compat layer needs to parse untrusted input (the ruleset) to translate it to a 64bit compatible format. We had a number of bugs in this department in the past, so allow users to turn this feature off. Add CONFIG_NETFILTER_XTABLES_COMPAT kconfig knob and make it default to y to keep existing behaviour. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
committed by
Pablo Neira Ayuso
parent
50f2db9e36
commit
47a6959fa3
@@ -158,7 +158,7 @@ struct xt_match {
|
||||
|
||||
/* Called when entry of this type deleted. */
|
||||
void (*destroy)(const struct xt_mtdtor_param *);
|
||||
#ifdef CONFIG_COMPAT
|
||||
#ifdef CONFIG_NETFILTER_XTABLES_COMPAT
|
||||
/* Called when userspace align differs from kernel space one */
|
||||
void (*compat_from_user)(void *dst, const void *src);
|
||||
int (*compat_to_user)(void __user *dst, const void *src);
|
||||
@@ -169,7 +169,7 @@ struct xt_match {
|
||||
const char *table;
|
||||
unsigned int matchsize;
|
||||
unsigned int usersize;
|
||||
#ifdef CONFIG_COMPAT
|
||||
#ifdef CONFIG_NETFILTER_XTABLES_COMPAT
|
||||
unsigned int compatsize;
|
||||
#endif
|
||||
unsigned int hooks;
|
||||
@@ -199,7 +199,7 @@ struct xt_target {
|
||||
|
||||
/* Called when entry of this type deleted. */
|
||||
void (*destroy)(const struct xt_tgdtor_param *);
|
||||
#ifdef CONFIG_COMPAT
|
||||
#ifdef CONFIG_NETFILTER_XTABLES_COMPAT
|
||||
/* Called when userspace align differs from kernel space one */
|
||||
void (*compat_from_user)(void *dst, const void *src);
|
||||
int (*compat_to_user)(void __user *dst, const void *src);
|
||||
@@ -210,7 +210,7 @@ struct xt_target {
|
||||
const char *table;
|
||||
unsigned int targetsize;
|
||||
unsigned int usersize;
|
||||
#ifdef CONFIG_COMPAT
|
||||
#ifdef CONFIG_NETFILTER_XTABLES_COMPAT
|
||||
unsigned int compatsize;
|
||||
#endif
|
||||
unsigned int hooks;
|
||||
@@ -452,7 +452,7 @@ xt_get_per_cpu_counter(struct xt_counters *cnt, unsigned int cpu)
|
||||
|
||||
struct nf_hook_ops *xt_hook_ops_alloc(const struct xt_table *, nf_hookfn *);
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
#ifdef CONFIG_NETFILTER_XTABLES_COMPAT
|
||||
#include <net/compat.h>
|
||||
|
||||
struct compat_xt_entry_match {
|
||||
@@ -533,5 +533,5 @@ int xt_compat_check_entry_offsets(const void *base, const char *elems,
|
||||
unsigned int target_offset,
|
||||
unsigned int next_offset);
|
||||
|
||||
#endif /* CONFIG_COMPAT */
|
||||
#endif /* CONFIG_NETFILTER_XTABLES_COMPAT */
|
||||
#endif /* _X_TABLES_H */
|
||||
|
||||
Reference in New Issue
Block a user