PHP  
 PHP_HEAD
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

Valgrind Report for sapi/phpdbg/tests/phpdbg_get_executable_stream_wrapper.phpt ('Getting executable lines from custom wrappers')

Script

1: <?php
2:
3:
/**
4:  * This example demonstrates how phpdbg_get_executable() behaves differently
5:  * when passed the 'files' option vs without, in the face of some mild abuse
6:  * of stream wrappers.
7:  */
8:
9: /**
10:  * First, we define a stream wrapper that simply maps to a real file on disk.
11:  */
12:
final class StreamWrapper
13:
{
14:     public function 
stream_open(
15:         
string $path,
16:         
string $mode,
17:         
int $options 0,
18:         
string &$openedPath null
19:     
) : bool {
20:         if (
$mode[0] !== 'r') {
21:             return 
false;
22:         }
23:
24:         list(
$scheme$path) = explode('://'$path2);
25:
26:         
$stream = \fopen($path$mode);
27:
28:         if (
$stream === false) {
29:             return 
false;
30:         }
31:
32:         
$this->stream $stream;
33:
34:         
/**
35:          * The $openedPath reference variable is assigned, indicating the
36:          * *actual* path that was opened. This affects the behaviour of
37:          * constants like __FILE__.
38:          */
39:         
$openedPath = \realpath($path);
40:
41:         return 
true;
42:     }
43:
44:     public function 
stream_read(int $count) : string { return \fread($this->stream$count); }
45:     public function 
stream_close() : bool { return \fclose($this->stream); }
46:     public function 
stream_eof() : bool { return \feof($this->stream); }
47:     public function 
stream_stat() { return \fstat($this->stream); }
48:
49:     private 
$stream false;
50: }
51:
52:
stream_wrapper_register('wrapper'StreamWrapper::class);
53:
54:
/**
55:  * Next, we include a PHP file that contains executable lines, via the stream
56:  * wrapper.
57:  */
58:
$filename __DIR__ '/phpdbg_get_executable_stream_wrapper.inc';
59: require 
'wrapper://' $filename;
60:
61:
/**
62:  * If we call phpdbg_get_executable() and pass no options, the realpath of the
63:  * included file is present in the array, but indicates no executable lines.
64:  */
65:
$x phpdbg_get_executable();
66:
67:
// We expect [5 => 0], but got an empty array ...
68:
var_dump($x[$filename]);
69:
70:
?>
71:

Report

==5823== Invalid read of size 4
==5823==    at 0x11240F2: zend_string_release_ex (zend_string.h:284)
==5823==    by 0x11240F2: destroy_op_array (zend_opcode.c:365)
==5823==    by 0x13962E1: php_phpdbg_destroy_file_source (phpdbg.c:130)
==5823==    by 0x1178D1F: zend_hash_destroy (zend_hash.c:1398)
==5823==    by 0x139F576: main (phpdbg.c:2161)
==5823==  Address 0x14f10ac4 is 4 bytes inside a block of size 40 free'd
==5823==    at 0x4C28BD4: free (vg_replace_malloc.c:529)
==5823==    by 0x13E46BE: phpdbg_watch_efree (phpdbg_watch.c:1170)
==5823==    by 0x10DA7B6: _efree (zend_alloc.c:2506)
==5823==    by 0x11C4870: _str_dtor (zend_string.c:62)
==5823==    by 0x1178D1F: zend_hash_destroy (zend_hash.c:1398)
==5823==    by 0x11C71B8: zend_interned_strings_deactivate (zend_string.c:295)
==5823==    by 0x10365A0: php_request_shutdown (main.c:1925)
==5823==    by 0x139EED9: main (phpdbg.c:2099)
==5823==  Block was alloc'd at
==5823==    at 0x4C291FA: malloc (vg_replace_malloc.c:298)
==5823==    by 0x10DE499: __zend_malloc (zend_alloc.c:2898)
==5823==    by 0x10DA511: _emalloc (zend_alloc.c:2492)
==5823==    by 0x10B8C4E: zend_string_alloc (zend_string.h:133)
==5823==    by 0x10B8C4E: zend_string_init (zend_string.h:155)
==5823==    by 0x10B8C4E: lex_scan (zend_language_scanner.l:2760)
==5823==    by 0x10E6C23: zendlex (zend_compile.c:1697)
==5823==    by 0x108E418: zendparse (zend_language_parser.c:4893)
==5823==    by 0x109AB23: zend_compile (zend_language_scanner.l:588)
==5823==    by 0x109AF07: compile_file (zend_language_scanner.l:638)
==5823==    by 0xBCCD36: phar_compile_file (phar.c:3335)
==5823==    by 0x13C8F4F: phpdbg_compile_file (phpdbg_list.c:274)
==5823==    by 0x13C94DB: phpdbg_init_compile_file (phpdbg_list.c:317)
==5823==    by 0x13AC299: phpdbg_compile (phpdbg_prompt.c:600)
==5823== 
==5823== Invalid read of size 4
==5823==    at 0x11240F2: zend_string_release_ex (zend_string.h:284)
==5823==    by 0x11240F2: destroy_op_array (zend_opcode.c:365)
==5823==    by 0x1396C7C: zm_shutdown_phpdbg (phpdbg.c:262)
==5823==    by 0x115D2A9: module_destructor (zend_API.c:2577)
==5823==    by 0x11473A1: module_destructor_zval (zend.c:747)
==5823==    by 0x117BCFE: _zend_hash_del_el_ex (zend_hash.c:1162)
==5823==    by 0x117BCFE: _zend_hash_del_el (zend_hash.c:1185)
==5823==    by 0x117BCFE: zend_hash_graceful_reverse_destroy (zend_hash.c:1639)
==5823==    by 0x115871A: zend_destroy_modules (zend_API.c:2015)
==5823==    by 0x1147B51: zend_shutdown (zend.c:978)
==5823==    by 0x1037FD2: php_module_shutdown (main.c:2467)
==5823==    by 0x139F5F0: main (phpdbg.c:2164)
==5823==  Address 0x158eb4b4 is 4 bytes inside a block of size 40 free'd
==5823==    at 0x4C28BD4: free (vg_replace_malloc.c:529)
==5823==    by 0x13E46BE: phpdbg_watch_efree (phpdbg_watch.c:1170)
==5823==    by 0x10DA7B6: _efree (zend_alloc.c:2506)
==5823==    by 0x11C4870: _str_dtor (zend_string.c:62)
==5823==    by 0x1178D1F: zend_hash_destroy (zend_hash.c:1398)
==5823==    by 0x11C71B8: zend_interned_strings_deactivate (zend_string.c:295)
==5823==    by 0x10365A0: php_request_shutdown (main.c:1925)
==5823==    by 0x139EED9: main (phpdbg.c:2099)
==5823==  Block was alloc'd at
==5823==    at 0x4C291FA: malloc (vg_replace_malloc.c:298)
==5823==    by 0x10DE499: __zend_malloc (zend_alloc.c:2898)
==5823==    by 0x10DA511: _emalloc (zend_alloc.c:2492)
==5823==    by 0x10B8C4E: zend_string_alloc (zend_string.h:133)
==5823==    by 0x10B8C4E: zend_string_init (zend_string.h:155)
==5823==    by 0x10B8C4E: lex_scan (zend_language_scanner.l:2760)
==5823==    by 0x10E6C23: zendlex (zend_compile.c:1697)
==5823==    by 0x108E418: zendparse (zend_language_parser.c:4893)
==5823==    by 0x109AB23: zend_compile (zend_language_scanner.l:588)
==5823==    by 0x109AF07: compile_file (zend_language_scanner.l:638)
==5823==    by 0xBCCD36: phar_compile_file (phar.c:3335)
==5823==    by 0x13C8F4F: phpdbg_compile_file (phpdbg_list.c:274)
==5823==    by 0x13C94DB: phpdbg_init_compile_file (phpdbg_list.c:317)
==5823==    by 0x13AC299: phpdbg_compile (phpdbg_prompt.c:600)
==5823== 
==5823== Invalid read of size 4
==5823==    at 0xA50C562: kpufhndl0 (in /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1)
==5823==    by 0xA512952: kpufhndl (in /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1)
==5823==    by 0xA3DC5C4: OCIHandleFree (in /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1)
==5823==    by 0xB38735: zm_shutdown_pdo_oci (pdo_oci.c:140)
==5823==    by 0x115D2A9: module_destructor (zend_API.c:2577)
==5823==    by 0x11473A1: module_destructor_zval (zend.c:747)
==5823==    by 0x117BCFE: _zend_hash_del_el_ex (zend_hash.c:1162)
==5823==    by 0x117BCFE: _zend_hash_del_el (zend_hash.c:1185)
==5823==    by 0x117BCFE: zend_hash_graceful_reverse_destroy (zend_hash.c:1639)
==5823==    by 0x115871A: zend_destroy_modules (zend_API.c:2015)
==5823==    by 0x1147B51: zend_shutdown (zend.c:978)
==5823==    by 0x1037FD2: php_module_shutdown (main.c:2467)
==5823==    by 0x139F5F0: main (phpdbg.c:2164)
==5823==  Address 0x14ebb000 is 0 bytes inside a block of size 43,632 free'd
==5823==    at 0x4C28BD4: free (vg_replace_malloc.c:529)
==5823==    by 0xA802CDE: ssMemFree (in /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1)
==5823==    by 0xA8C8ED9: sktsfFree (in /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1)
==5823==    by 0xB258F6B: kpummefree (in /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1)
==5823==    by 0xA5126E6: kpufhndl0 (in /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1)
==5823==    by 0xA512952: kpufhndl (in /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1)
==5823==    by 0xA3DC5C4: OCIHandleFree (in /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1)
==5823==    by 0xB38735: zm_shutdown_pdo_oci (pdo_oci.c:140)
==5823==    by 0x115D2A9: module_destructor (zend_API.c:2577)
==5823==    by 0x11473A1: module_destructor_zval (zend.c:747)
==5823==    by 0x117BCFE: _zend_hash_del_el_ex (zend_hash.c:1162)
==5823==    by 0x117BCFE: _zend_hash_del_el (zend_hash.c:1185)
==5823==    by 0x117BCFE: zend_hash_graceful_reverse_destroy (zend_hash.c:1639)
==5823==    by 0x115871A: zend_destroy_modules (zend_API.c:2015)
==5823==  Block was alloc'd at
==5823==    at 0x4C291FA: malloc (vg_replace_malloc.c:298)
==5823==    by 0xA802CEC: ssMemMalloc (in /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1)
==5823==    by 0xA8C8EEB: sktsfMalloc (in /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1)
==5823==    by 0xB258EFD: kpummealloc (in /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1)
==5823==    by 0xA51C030: kpuinit0 (in /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1)
==5823==    by 0xA51A2FC: kpuenvcr (in /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1)
==5823==    by 0xA3DC4E9: OCIEnvCreate (in /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1)
==5823==    by 0xB386A3: zm_activate_pdo_oci (pdo_oci.c:118)
==5823==    by 0x115D48B: zend_activate_modules (zend_API.c:2613)
==5823==    by 0x1035D86: php_request_startup (main.c:1803)
==5823==    by 0x139DB47: main (phpdbg.c:1802)
==5823== 

 

Generated at Thu, 19 Jul 2018 09:51:32 +0000 (3 days ago)

Copyright © 2005-2018 The PHP Group
All rights reserved.