mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Proper fix for bug #37205
This commit is contained in:
parent
522ce80071
commit
ff452441e2
2 changed files with 14 additions and 0 deletions
|
@ -441,6 +441,7 @@ static int fcgi_read_request(fcgi_request *req)
|
|||
unsigned char buf[FCGI_MAX_LENGTH+8];
|
||||
|
||||
req->keep = 0;
|
||||
req->has_in = 0;
|
||||
req->in_len = 0;
|
||||
req->out_hdr = NULL;
|
||||
req->out_pos = req->out_buf;
|
||||
|
@ -509,6 +510,15 @@ static int fcgi_read_request(fcgi_request *req)
|
|||
len = (hdr.contentLengthB1 << 8) | hdr.contentLengthB0;
|
||||
padding = hdr.paddingLength;
|
||||
}
|
||||
if (safe_read(req, &hdr, sizeof(fcgi_header)) != sizeof(fcgi_header) ||
|
||||
hdr.version < FCGI_VERSION_1 ||
|
||||
hdr.type != FCGI_STDIN) {
|
||||
req->keep = 0;
|
||||
return 0;
|
||||
}
|
||||
req->in_len = (hdr.contentLengthB1 << 8) | hdr.contentLengthB0;
|
||||
req->in_pad = hdr.paddingLength;
|
||||
req->has_in = (req->in_len != 0);
|
||||
} else if (hdr.type == FCGI_GET_VALUES) {
|
||||
int i, j;
|
||||
int name_len;
|
||||
|
@ -551,6 +561,9 @@ int fcgi_read(fcgi_request *req, char *str, int len)
|
|||
fcgi_header hdr;
|
||||
unsigned char buf[8];
|
||||
|
||||
if (!req->has_in) {
|
||||
return 0;
|
||||
}
|
||||
n = 0;
|
||||
rest = len;
|
||||
while (rest > 0) {
|
||||
|
|
|
@ -97,6 +97,7 @@ typedef struct _fcgi_request {
|
|||
int id;
|
||||
int keep;
|
||||
|
||||
int has_in;
|
||||
int in_len;
|
||||
int in_pad;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue