Message ID | 1417278278-30206-1-git-send-email-eric@regit.org |
---|---|
State | Accepted |
Delegated to: | Pablo Neira |
Headers | show |
On Sat, Nov 29, 2014 at 05:24:38PM +0100, Eric Leblond wrote: > Current code is causing a failure in adding a set containing > a really long list of elements. The failure occurs as soon as > the line is longer than flex read buffer. > > When a line is longer than scanner buffer size, the code in YY_INPUT > forces a rewind to the beginning of the string because it does not > find a end of line. The result is that the string is never parsed. > > This patch updates the code by rewinding till we found a space. But the part that didn't fit in will be ignore, right? So the user will lose some elements in the set? If so, I think it's better to spot an error via YY_FATAL_ERROR to indicate that the line is too long to the user. -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/src/scanner.l b/src/scanner.l index f0ed8d4..2fafa71 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -47,7 +47,8 @@ clearerr(yyin); \ } \ if (result > 1) { \ - while (result > 1 && buf[result - 1] != '\n') \ + while (result > 1 && \ + (buf[result - 1] != '\n' && buf[result - 1] != ' ')) \ result--, n++; \ result--, n++; \ fseek(yyin, -n, SEEK_CUR); \
Current code is causing a failure in adding a set containing a really long list of elements. The failure occurs as soon as the line is longer than flex read buffer. When a line is longer than scanner buffer size, the code in YY_INPUT forces a rewind to the beginning of the string because it does not find a end of line. The result is that the string is never parsed. This patch updates the code by rewinding till we found a space. Signed-off-by: Eric Leblond <eric@regit.org> --- src/scanner.l | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)