]> granicus.if.org Git - php/commitdiff
Fixed null termination
authorTjerk Meesters <datibbaw@php.net>
Fri, 7 Mar 2014 11:23:46 +0000 (19:23 +0800)
committerTjerk Meesters <datibbaw@php.net>
Fri, 7 Mar 2014 11:23:46 +0000 (19:23 +0800)
ext/spl/spl_directory.c
ext/spl/tests/bug65545.phpt

index 668977134e1c553fc6a044c3e1968df1fb269585..3fbf2ce12b8864abd5aee0bbbee13771d4dc5413 100644 (file)
@@ -2865,7 +2865,8 @@ SPL_METHOD(SplFileObject, fread)
        Z_STRVAL_P(return_value) = emalloc(length + 1);
        Z_STRLEN_P(return_value) = php_stream_read(intern->u.file.stream, Z_STRVAL_P(return_value), length);
 
-       Z_STRVAL_P(return_value)[length] = 0;
+       /* needed because recv/read/gzread doesnt put a null at the end*/
+       Z_STRVAL_P(return_value)[Z_STRLEN_P(return_value)] = 0;
        Z_TYPE_P(return_value) = IS_STRING;
 }
 
index b43f10f6e6605b48d69875c9b32447ef3b07ca94..76c29cbf48f251e20f16f3f4edeba73002b16d23 100644 (file)
@@ -12,6 +12,10 @@ var_dump($data);
 $data = $obj->fread(0);
 var_dump($data);
 
+// read more data than is available
+$data = $obj->fread(filesize(__FILE__) + 32);
+var_dump(strlen($data) === filesize(__FILE__) - 5);
+
 ?>
 --EXPECTF--
 string(5) "<?php"
@@ -21,3 +25,4 @@ NULL
 
 Warning: SplFileObject::fread(): Length parameter must be greater than 0 in %s on line %d
 bool(false)
+bool(true)