]> git.ipfire.org Git - thirdparty/nftables.git/commit
erec: Fix input descriptors for included files
authorAnatole Denis <anatole@rezel.net>
Tue, 21 Feb 2017 14:48:05 +0000 (15:48 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Sat, 25 Feb 2017 12:40:14 +0000 (13:40 +0100)
commitb14572f72aac80ed06d3fac0259896ecabb51fd1
tree02106b22442c06e11cd12cc589cc7c5ffbf24fa3
parentb2d7b78af50d199201e7e0d6de7c1ba9ba471c12
erec: Fix input descriptors for included files

Currently, when creating an error record (erec), the current location in the
file is duplicated, but not the input_descriptor inside it. Input descriptors
are added and removed by the parser when including files, and memory references
in the error record thus become incorrect when a subsequent file is included.

This patch copies the input descriptors recursively to ensure each erec has the
correct chain of input descriptors at the time of printing.

For example:
badinclude.nft:
```
include "error.nft"
include "empty.nft"
```
a.nft:
```
add rule t c obvious syntax error
```
b.nft: (empty file)

Results in the last included file being referenced and quoted for all errors
$ nft -f badinclude.nft
In file included from badinclude.nft:2:1-20:
./empty.nft:1:34-34: Error: syntax error, unexpected newline

                                 ^

Expected behavior:
$ nft -f badinclude.nft -I.
In file included from badinclude.nft:1:1-20:
./error.nft:1:34-34: Error: syntax error, unexpected newline
add rule t c obvious syntax error
                                 ^

Signed-off-by: Anatole Denis <anatole@rezel.net>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/erec.c