]> granicus.if.org Git - re2c/commit
Skeleton: fixed initialization of maximal path length.
authorUlya Trofimovich <skvadrik@gmail.com>
Thu, 3 Aug 2017 10:52:49 +0000 (11:52 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Thu, 3 Aug 2017 11:00:32 +0000 (12:00 +0100)
commitdc2495c6807dccbd7fa918fd866ae32194f01edb
tree926cc7d383446a794e56dd950b3cd825d7291619
parentea25db593ee68b2850586858fc7e844bfc2bc843
Skeleton: fixed initialization of maximal path length.

Broken by commit fffb5932ee52127e03b9f7f5ccca83a421d69061.

Path length were initialized with 0 instead 'DIST_ERROR', which caused
incorrect calculation of maximal path length. This in turn caused errors
in estimating the number of byted necessary to hold keys during data
generation in skeleton. The resulting keys were one-byte while maximal
path length was more than one byte, which (fortunately!) caused runtime
errors in skeleton programs.

Example of program that caused skeleton error:
    /*!re2c
        (@t [\x00] [^]{5,6})* {}
    */

The error was hidden for so long because in practice inputs that need
more than one-byte keys are rare, and fuzzer sets 'ulimit -t 10' when
running re2c, so most of such programs were simply aborted. Those that
were not aborted still had a chance of estimating key size correctly.
re2c/src/skeleton/maxpath.cc