dmitry Thu Apr 27 11:39:46 2006 UTC
Modified files:
/php-src/sapi/cgi fastcgi.c fastcgi.h
Log:
Proper fix for bug #37205
http://cvs.php.net/viewcvs.cgi/php-src/sapi/cgi/fastcgi.c?r1=1.10&r2=1.11&diff_format=u
Index: php-src/sapi/cgi/fastcgi.c
diff -u php-src/sapi/cgi/fastcgi.c:1.10 php-src/sapi/cgi/fastcgi.c:1.11
--- php-src/sapi/cgi/fastcgi.c:1.10 Wed Apr 26 17:48:45 2006
+++ php-src/sapi/cgi/fastcgi.c Thu Apr 27 11:39:46 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: fastcgi.c,v 1.10 2006/04/26 17:48:45 dmitry Exp $ */
+/* $Id: fastcgi.c,v 1.11 2006/04/27 11:39:46 dmitry Exp $ */
#include "fastcgi.h"
#include "php.h"
@@ -441,6 +441,7 @@
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 @@
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 @@
fcgi_header hdr;
unsigned char buf[8];
+ if (!req->has_in) {
+ return 0;
+ }
n = 0;
rest = len;
while (rest > 0) {
http://cvs.php.net/viewcvs.cgi/php-src/sapi/cgi/fastcgi.h?r1=1.2&r2=1.3&diff_format=u
Index: php-src/sapi/cgi/fastcgi.h
diff -u php-src/sapi/cgi/fastcgi.h:1.2 php-src/sapi/cgi/fastcgi.h:1.3
--- php-src/sapi/cgi/fastcgi.h:1.2 Sun Jan 1 13:09:57 2006
+++ php-src/sapi/cgi/fastcgi.h Thu Apr 27 11:39:46 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: fastcgi.h,v 1.2 2006/01/01 13:09:57 sniper Exp $ */
+/* $Id: fastcgi.h,v 1.3 2006/04/27 11:39:46 dmitry Exp $ */
/* FastCGI protocol */
@@ -97,6 +97,7 @@
int id;
int keep;
+ int has_in;
int in_len;
int in_pad;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php