X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=pcrs.c;h=955ccf8baffcaaadcb04ed2b7785adb95786ff66;hb=bc53ee8ce70c58b29870c67ae28ae834e5914a6a;hp=156ae9882d1a64b4c72036849ee4bcd8a4926158;hpb=f157fb3e5e3041012a88b37d07f0cb3817c75fda;p=privoxy.git diff --git a/pcrs.c b/pcrs.c index 156ae988..955ccf8b 100644 --- a/pcrs.c +++ b/pcrs.c @@ -1,4 +1,4 @@ -const char pcrs_rcs[] = "$Id: pcrs.c,v 1.47 2015/01/24 16:40:59 fabiankeil Exp $"; +const char pcrs_rcs[] = "$Id: pcrs.c,v 1.49 2016/05/08 10:45:51 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/pcrs.c,v $ @@ -375,8 +375,12 @@ static pcrs_substitute *pcrs_compile_replacement(const char *replacement, int tr goto plainchar; } + assert(l < PCRS_MAX_SUBMATCHES - 1); + assert(r->backref[l] < PCRS_MAX_SUBMATCHES + 2); /* Valid and in range? -> record */ - if (0 <= r->backref[l] && r->backref[l] < PCRS_MAX_SUBMATCHES + 2) + if ((0 <= r->backref[l]) && + (r->backref[l] < PCRS_MAX_SUBMATCHES + 2) && + (l < PCRS_MAX_SUBMATCHES - 1)) { r->backref_count[r->backref[l]] += 1; r->block_offset[++l] = k;