diff options
Diffstat (limited to 'sapi/cgi/cgi_main.c')
| -rw-r--r-- | sapi/cgi/cgi_main.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c index d509757432..fd8a666a39 100644 --- a/sapi/cgi/cgi_main.c +++ b/sapi/cgi/cgi_main.c @@ -89,14 +89,21 @@ static int _print_module_info ( zend_module_entry *module, void *arg ) { static int sapi_cgibin_ub_write(const char *str, uint str_length) { + const char *ptr = str; + uint remaining = str_length; size_t ret; - ret = fwrite(str, 1, str_length, stdout); - if (ret != str_length) { - php_handle_aborted_connection(); + while (remaining > 0) + { + ret = fwrite(ptr, 1, MIN(remaining, 16384), stdout); + if (!ret) { + php_handle_aborted_connection(); + } + ptr += ret; + remaining -= ret; } - return ret; + return str_length; } |
