]> granicus.if.org Git - re2c/commit
Fixed bug #142 "segvault with null terminated input"
authorUlya Trofimovich <skvadrik@gmail.com>
Wed, 11 May 2016 14:47:37 +0000 (15:47 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Wed, 11 May 2016 14:47:37 +0000 (15:47 +0100)
commit40bf6067dafb135b3425c26dae390b064e3443ef
tree355a5ec436d2c730be0d05fc9c3cb737d35e21af
parent12f748758d0fb4c74cd872a01f96dd48e8242944
Fixed bug #142 "segvault with null terminated input"

Steps to reproduce:
    $ echo -ne "&\x00" > A
    $ re2c A
    Segmentation fault

Analyses: when re2c finds NULL in the input file, it checks for the
end of input; if indeed it has reached the end of input, it stops.
Otherwise, it's just some NULL byte in the middle of input; it should
be handled like any other character.

The first case (NULL as end of input) was handled correctly, but
in the second case (NULL in the middle of input) re2c crashed:
someone forgot to put an appropriate 'goto' statement, which caused
completely ad-hoc control flow in lexer.
re2c/bootstrap/src/parse/lex.cc
re2c/src/parse/lex.re
re2c/test/bug142.c [new file with mode: 0644]
re2c/test/bug142.re [new file with mode: 0644]