Add check for NULL subject to POSIX regexec().
This commit is contained in:
parent
cb854a912e
commit
2a294ddadb
|
@ -30,6 +30,8 @@ substituting.
|
||||||
|
|
||||||
10. Add null_subject and null_replacement modifiers to pcre2test.
|
10. Add null_subject and null_replacement modifiers to pcre2test.
|
||||||
|
|
||||||
|
11. Add check for NULL subject to POSIX regexec() function.
|
||||||
|
|
||||||
|
|
||||||
Version 10.39 29-October-2021
|
Version 10.39 29-October-2021
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
|
@ -368,6 +368,8 @@ int rc, so, eo;
|
||||||
int options = 0;
|
int options = 0;
|
||||||
pcre2_match_data *md = (pcre2_match_data *)preg->re_match_data;
|
pcre2_match_data *md = (pcre2_match_data *)preg->re_match_data;
|
||||||
|
|
||||||
|
if (string == NULL) return REG_INVARG;
|
||||||
|
|
||||||
if ((eflags & REG_NOTBOL) != 0) options |= PCRE2_NOTBOL;
|
if ((eflags & REG_NOTBOL) != 0) options |= PCRE2_NOTBOL;
|
||||||
if ((eflags & REG_NOTEOL) != 0) options |= PCRE2_NOTEOL;
|
if ((eflags & REG_NOTEOL) != 0) options |= PCRE2_NOTEOL;
|
||||||
if ((eflags & REG_NOTEMPTY) != 0) options |= PCRE2_NOTEMPTY;
|
if ((eflags & REG_NOTEMPTY) != 0) options |= PCRE2_NOTEMPTY;
|
||||||
|
|
|
@ -771,7 +771,7 @@ static modstruct modlist[] = {
|
||||||
PCRE2_NOTBOL|PCRE2_NOTEMPTY|PCRE2_NOTEOL)
|
PCRE2_NOTBOL|PCRE2_NOTEMPTY|PCRE2_NOTEOL)
|
||||||
|
|
||||||
#define POSIX_SUPPORTED_MATCH_CONTROLS (CTL_AFTERTEXT|CTL_ALLAFTERTEXT)
|
#define POSIX_SUPPORTED_MATCH_CONTROLS (CTL_AFTERTEXT|CTL_ALLAFTERTEXT)
|
||||||
#define POSIX_SUPPORTED_MATCH_CONTROLS2 (0)
|
#define POSIX_SUPPORTED_MATCH_CONTROLS2 (CTL2_NULL_SUBJECT)
|
||||||
|
|
||||||
/* Control bits that are not ignored with 'push'. */
|
/* Control bits that are not ignored with 'push'. */
|
||||||
|
|
||||||
|
@ -4106,7 +4106,7 @@ Returns: nothing
|
||||||
static void
|
static void
|
||||||
show_controls(uint32_t controls, uint32_t controls2, const char *before)
|
show_controls(uint32_t controls, uint32_t controls2, const char *before)
|
||||||
{
|
{
|
||||||
fprintf(outfile, "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
|
fprintf(outfile, "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
|
||||||
before,
|
before,
|
||||||
((controls & CTL_AFTERTEXT) != 0)? " aftertext" : "",
|
((controls & CTL_AFTERTEXT) != 0)? " aftertext" : "",
|
||||||
((controls & CTL_ALLAFTERTEXT) != 0)? " allaftertext" : "",
|
((controls & CTL_ALLAFTERTEXT) != 0)? " allaftertext" : "",
|
||||||
|
@ -4136,6 +4136,8 @@ fprintf(outfile, "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s
|
||||||
((controls & CTL_MEMORY) != 0)? " memory" : "",
|
((controls & CTL_MEMORY) != 0)? " memory" : "",
|
||||||
((controls2 & CTL2_NL_SET) != 0)? " newline" : "",
|
((controls2 & CTL2_NL_SET) != 0)? " newline" : "",
|
||||||
((controls & CTL_NULLCONTEXT) != 0)? " null_context" : "",
|
((controls & CTL_NULLCONTEXT) != 0)? " null_context" : "",
|
||||||
|
((controls2 & CTL2_NULL_REPLACEMENT) != 0)? " null_replacement" : "",
|
||||||
|
((controls2 & CTL2_NULL_SUBJECT) != 0)? " null_subject" : "",
|
||||||
((controls & CTL_POSIX) != 0)? " posix" : "",
|
((controls & CTL_POSIX) != 0)? " posix" : "",
|
||||||
((controls & CTL_POSIX_NOSUB) != 0)? " posix_nosub" : "",
|
((controls & CTL_POSIX_NOSUB) != 0)? " posix_nosub" : "",
|
||||||
((controls & CTL_PUSH) != 0)? " push" : "",
|
((controls & CTL_PUSH) != 0)? " push" : "",
|
||||||
|
|
Loading…
Reference in New Issue