diff options
| author | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-10-11 04:00:22 -0400 |
|---|---|---|
| committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-10-14 12:00:56 -0400 |
| commit | c54032e05bfcbb261f47aaadf8476e864e8712f4 (patch) | |
| tree | 60d0012f8d4bd92c1a0e3ccc7f330174625506a8 | |
| parent | 0ca743a5599199152a31a7146b83213c786c2eb2 (diff) | |
netfilter: nf_tables: nft_payload: fix transport header base
We cannot use skb->transport_header since it's unset, use
pkt->xt.thoff instead.
Now possible using information made available through the x_tables
compatibility layer.
Reported-by: Eric Leblond <eric@regit.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
| -rw-r--r-- | net/netfilter/nf_tables_core.c | 2 | ||||
| -rw-r--r-- | net/netfilter/nft_payload.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/net/netfilter/nf_tables_core.c b/net/netfilter/nf_tables_core.c index e51a45c12128..3c13007d80df 100644 --- a/net/netfilter/nf_tables_core.c +++ b/net/netfilter/nf_tables_core.c | |||
| @@ -44,7 +44,7 @@ static bool nft_payload_fast_eval(const struct nft_expr *expr, | |||
| 44 | if (priv->base == NFT_PAYLOAD_NETWORK_HEADER) | 44 | if (priv->base == NFT_PAYLOAD_NETWORK_HEADER) |
| 45 | ptr = skb_network_header(skb); | 45 | ptr = skb_network_header(skb); |
| 46 | else | 46 | else |
| 47 | ptr = skb_transport_header(skb); | 47 | ptr = skb_network_header(skb) + pkt->xt.thoff; |
| 48 | 48 | ||
| 49 | ptr += priv->offset; | 49 | ptr += priv->offset; |
| 50 | 50 | ||
diff --git a/net/netfilter/nft_payload.c b/net/netfilter/nft_payload.c index bc8bdb2c1ba7..a2aeb318678f 100644 --- a/net/netfilter/nft_payload.c +++ b/net/netfilter/nft_payload.c | |||
| @@ -36,7 +36,7 @@ static void nft_payload_eval(const struct nft_expr *expr, | |||
| 36 | offset = skb_network_offset(skb); | 36 | offset = skb_network_offset(skb); |
| 37 | break; | 37 | break; |
| 38 | case NFT_PAYLOAD_TRANSPORT_HEADER: | 38 | case NFT_PAYLOAD_TRANSPORT_HEADER: |
| 39 | offset = skb_transport_offset(skb); | 39 | offset = pkt->xt.thoff; |
| 40 | break; | 40 | break; |
| 41 | default: | 41 | default: |
| 42 | BUG(); | 42 | BUG(); |
