cvs: php-src /main main.c
| From: | Dmitry Stogov | Date: | Tue, 28 Apr 2009 07:13:44 +0000 |
| Subject: | cvs: php-src /main main.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-57338@lists.php.net to get a copy of this message | ||
dmitry Tue Apr 28 07:13:44 2009 UTC
Modified files:
/php-src/main main.c
Log:
Fixed bug #48034 (PHP crashes when script is 8192 (8KB) bytes long)
http://cvs.php.net/viewvc.cgi/php-src/main/main.c?r1=1.795&r2=1.796&diff_format=u
Index: php-src/main/main.c
diff -u php-src/main/main.c:1.795 php-src/main/main.c:1.796
--- php-src/main/main.c:1.795 Fri Mar 27 02:33:44 2009
+++ php-src/main/main.c Tue Apr 28 07:13:43 2009
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: main.c,v 1.795 2009/03/27 02:33:44 lbarnaud Exp $ */
+/* $Id: main.c,v 1.796 2009/04/28 07:13:43 dmitry Exp $ */
/* {{{ includes
*/
@@ -89,6 +89,13 @@
#include "SAPI.h"
#include "rfc1867.h"
+
+#if HAVE_SYS_MMAN_H
+# include <sys/mman.h>
+# ifndef PAGE_SIZE
+# define PAGE_SIZE 4096
+# endif
+#endif
/* }}} */
PHPAPI int (*php_register_internal_extensions_func)(TSRMLS_D) = php_register_internal_extensions;
@@ -1237,8 +1244,10 @@
handle->handle.stream.isatty = 0;
/* can we mmap immeadiately? */
memset(&handle->handle.stream.mmap, 0, sizeof(handle->handle.stream.mmap));
- len = php_zend_stream_fsizer(stream TSRMLS_CC) + ZEND_MMAP_AHEAD;
- if (php_stream_mmap_possible(stream)
+ len = php_zend_stream_fsizer(stream TSRMLS_CC);
+ if (len != 0
+ && ((len - 1) % PAGE_SIZE) <= PAGE_SIZE - ZEND_MMAP_AHEAD
+ && php_stream_mmap_possible(stream)
&& (p = php_stream_mmap_range(stream, 0, len, PHP_STREAM_MAP_MODE_SHARED_READONLY,
&mapped_len)) != NULL) {
handle->handle.stream.closer = php_zend_stream_mmap_closer;
handle->handle.stream.mmap.buf = p;