diff options
Diffstat (limited to 'regex')
-rw-r--r-- | regex/regcomp.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/regex/regcomp.c b/regex/regcomp.c index 0d083167..5072f7fa 100644 --- a/regex/regcomp.c +++ b/regex/regcomp.c @@ -212,7 +212,10 @@ regcomp(regex_t *preg, const char *pattern, int cflags) return(REG_ESPACE); } p->ssize = len/(size_t)2*(size_t)3 + (size_t)1; /* ugh */ - assert(p->ssize >= len); + if(p->ssize < len || p->ssize > LONG_MAX / sizeof(sop)){ + free((char *)g); + return REG_INVARG; + } p->strip = (sop *)malloc(p->ssize * sizeof(sop)); p->slen = 0; if (p->strip == NULL) { |