• J
    regex: add regexec_buf() that can work on a non NUL-terminated string · 2f895225
    Johannes Schindelin 提交于
    We just introduced a test that demonstrates that our sloppy use of
    regexec() on a mmap()ed area can result in incorrect results or even
    hard crashes.
    
    So what we need to fix this is a function that calls regexec() on a
    length-delimited, rather than a NUL-terminated, string.
    
    Happily, there is an extension to regexec() introduced by the NetBSD
    project and present in all major regex implementation including
    Linux', MacOSX' and the one Git includes in compat/regex/: by using
    the (non-POSIX) REG_STARTEND flag, it is possible to tell the
    regexec() function that it should only look at the offsets between
    pmatch[0].rm_so and pmatch[0].rm_eo.
    
    That is exactly what we need.
    
    Since support for REG_STARTEND is so widespread by now, let's just
    introduce a helper function that always uses it, and tell people
    on a platform whose regex library does not support it to use the
    one from our compat/regex/ directory.
    Signed-off-by: NJohannes Schindelin <johannes.schindelin@gmx.de>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    2f895225
Makefile 75.8 KB