In case we are reading the rules from a file we need to reset the
file descriptor to the original position when calling erec_print.
This was not the case in previous code and was leading to valid
file to be seen as invalid when treated in debug mode.
Signed-off-by: Eric Leblond <eric@regit.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
char *pbuf = NULL;
unsigned int i, end;
int l, ret;
+ off_t orig_offset = 0;
switch (indesc->type) {
case INDESC_BUFFER:
break;
case INDESC_FILE:
memset(buf, 0, sizeof(buf));
+ orig_offset = lseek(indesc->fd, 0, SEEK_CUR);
lseek(indesc->fd, loc->line_offset, SEEK_SET);
ret = read(indesc->fd, buf, sizeof(buf) - 1);
if (ret > 0)
*strchrnul(buf, '\n') = '\0';
line = buf;
+ lseek(indesc->fd, orig_offset, SEEK_SET);
break;
case INDESC_INTERNAL:
case INDESC_NETLINK: