dmitry          Tue Apr 28 07:13:31 2009 UTC

  Modified files:              (Branch: PHP_5_3)
    /php-src    NEWS 
    /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/NEWS?r1=1.2027.2.547.2.965.2.570&r2=1.2027.2.547.2.965.2.571&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.965.2.570 
php-src/NEWS:1.2027.2.547.2.965.2.571
--- php-src/NEWS:1.2027.2.547.2.965.2.570       Mon Apr 27 18:45:12 2009
+++ php-src/NEWS        Tue Apr 28 07:13:30 2009
@@ -17,6 +17,7 @@
 
 - Fixed bug #48087 (call_user_method() invalid free of arguments). (Felipe)
 - Fixed bug #48060 (pdo_pgsql - large objects are returned as empty). (Matteo)
+- Fixed bug #48034 (PHP crashes when script is 8192 (8KB) bytes long). (Dmitry)
 - Fixed bug #48023 (spl_autoload_register didn't store closures). (Etienne)
 - Fixed bug #48004 (Error handler prevents creation of default object).
   (Dmitry)
http://cvs.php.net/viewvc.cgi/php-src/main/main.c?r1=1.640.2.23.2.57.2.47&r2=1.640.2.23.2.57.2.48&diff_format=u
Index: php-src/main/main.c
diff -u php-src/main/main.c:1.640.2.23.2.57.2.47 
php-src/main/main.c:1.640.2.23.2.57.2.48
--- php-src/main/main.c:1.640.2.23.2.57.2.47    Fri Mar 27 02:34:06 2009
+++ php-src/main/main.c Tue Apr 28 07:13:30 2009
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: main.c,v 1.640.2.23.2.57.2.47 2009/03/27 02:34:06 lbarnaud Exp $ */
+/* $Id: main.c,v 1.640.2.23.2.57.2.48 2009/04/28 07:13:30 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;
@@ -1134,8 +1141,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;



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to