netfilter: nft_osf: use NFT_OSF_MAXGENRELEN instead of IFNAMSIZ

As no "genre" on pf.os exceed 16 bytes of length, we reduce
NFT_OSF_MAXGENRELEN parameter to 16 bytes and use it instead of IFNAMSIZ.

Signed-off-by: Fernando Fernandez Mancera <ffmancera@riseup.net>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
Fernando Fernandez Mancera 2018-08-07 11:43:02 +02:00 committed by Pablo Neira Ayuso
parent 981467033a
commit 35a8a3bd1c
2 changed files with 4 additions and 5 deletions

View File

@ -8,6 +8,7 @@
#define NFT_SET_MAXNAMELEN NFT_NAME_MAXLEN #define NFT_SET_MAXNAMELEN NFT_NAME_MAXLEN
#define NFT_OBJ_MAXNAMELEN NFT_NAME_MAXLEN #define NFT_OBJ_MAXNAMELEN NFT_NAME_MAXLEN
#define NFT_USERDATA_MAXLEN 256 #define NFT_USERDATA_MAXLEN 256
#define NFT_OSF_MAXGENRELEN 16
/** /**
* enum nft_registers - nf_tables registers * enum nft_registers - nf_tables registers

View File

@ -4,8 +4,6 @@
#include <net/netfilter/nf_tables.h> #include <net/netfilter/nf_tables.h>
#include <linux/netfilter/nfnetlink_osf.h> #include <linux/netfilter/nfnetlink_osf.h>
#define OSF_GENRE_SIZE 32
struct nft_osf { struct nft_osf {
enum nft_registers dreg:8; enum nft_registers dreg:8;
}; };
@ -37,9 +35,9 @@ static void nft_osf_eval(const struct nft_expr *expr, struct nft_regs *regs,
os_name = nf_osf_find(skb, nf_osf_fingers); os_name = nf_osf_find(skb, nf_osf_fingers);
if (!os_name) if (!os_name)
strncpy((char *)dest, "unknown", IFNAMSIZ); strncpy((char *)dest, "unknown", NFT_OSF_MAXGENRELEN);
else else
strncpy((char *)dest, os_name, IFNAMSIZ); strncpy((char *)dest, os_name, NFT_OSF_MAXGENRELEN);
} }
static int nft_osf_init(const struct nft_ctx *ctx, static int nft_osf_init(const struct nft_ctx *ctx,
@ -51,7 +49,7 @@ static int nft_osf_init(const struct nft_ctx *ctx,
priv->dreg = nft_parse_register(tb[NFTA_OSF_DREG]); priv->dreg = nft_parse_register(tb[NFTA_OSF_DREG]);
err = nft_validate_register_store(ctx, priv->dreg, NULL, err = nft_validate_register_store(ctx, priv->dreg, NULL,
NFTA_DATA_VALUE, OSF_GENRE_SIZE); NFTA_DATA_VALUE, NFT_OSF_MAXGENRELEN);
if (err < 0) if (err < 0)
return err; return err;