In functions used to decode a FCGI parameter, the test on the data length
before reading the parameter's name and value did not consider the offset
value used to skip already parsed data. So it was possible to read more data
than available (OOB read). To do so, a malicious FCGI server must send a
forged GET_VALUES_RESULT record containing a parameter with wrong name/value
length.
Thank you to Kamil Frankowicz for having reported this.
This patch must be backported to all stable versions.
len += 4;
}
- if (data < nlen + vlen)
+ if (data < o + nlen + vlen)
return 0;
p->n = ist2(b_peek(in, o), nlen);
len += 4;
}
- if (data < nlen + vlen)
+ if (data < o + nlen + vlen)
return 0;
p->n = ist2(in->area + o, nlen);