diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2022-01-02 21:39:42 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2022-01-15 18:11:22 +0100 |
commit | 5c2b2b0a2ba7c1403c6af3e59dd3f51d04a64645 (patch) | |
tree | bd49b55be7618b302307e808fc7c23e2acb59760 /src/scanner.l | |
parent | 8ad4056e9182a03cf160b045532f0569d6b79c22 (diff) |
src: error reporting with -f and read from stdin
Reading from stdin requires to store the ruleset in a buffer so error
reporting works accordingly, eg.
# cat ruleset.nft | nft -f -
/dev/stdin:3:13-13: Error: unknown identifier 'x'
ip saddr $x
^
The error reporting infrastructure performs a fseek() on the file
descriptor which does not work in this case since the data from the
descriptor has been already consumed.
This patch adds a new stdin input descriptor to perform this special
handling which consists on re-routing this request through the buffer
functions.
Fixes: 935f82e7dd49 ("Support 'nft -f -' to read from stdin")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/scanner.l')
-rw-r--r-- | src/scanner.l | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/scanner.l b/src/scanner.l index f28bf315..7dcc45c2 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -1032,7 +1032,7 @@ void scanner_push_buffer(void *scanner, const struct input_descriptor *indesc, new_indesc = xzalloc(sizeof(struct input_descriptor)); memcpy(new_indesc, indesc, sizeof(*new_indesc)); new_indesc->data = buffer; - new_indesc->name = NULL; + new_indesc->name = xstrdup(indesc->name); scanner_push_indesc(state, new_indesc); b = yy_scan_string(buffer, scanner); |