Return to bug52820.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / file |
1.1 misho 1: --TEST-- 2: Bug #52820 (writes to fopencookie FILE* not commited when seeking the stream) 3: --SKIPIF-- 4: <?php 1.1.1.2 ! misho 5: if (!function_exists('leak_variable')) ! 6: die("skip only for debug builds"); 1.1 misho 7: /* unfortunately no standard function does a cast to FILE*, so we need 8: * curl to test this */ 9: if (!extension_loaded("curl")) exit("skip curl extension not loaded"); 10: $handle=curl_init('http://127.0.0.1:37349/'); 11: curl_setopt($handle, CURLOPT_VERBOSE, true); 12: curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); 13: if (!curl_setopt($handle, CURLOPT_STDERR, fopen("php://memory", "w+"))) 14: die("skip fopencookie not supported on this platform"); 15: --FILE-- 16: <?php 17: function do_stuff($url) { 18: $handle=curl_init('http://127.0.0.1:37349/'); 19: curl_setopt($handle, CURLOPT_VERBOSE, true); 20: curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); 21: curl_setopt($handle, CURLOPT_STDERR, $o = fopen($url, "w+")); 22: curl_exec($handle); 23: echo "About to rewind!\n"; 24: rewind($o); 25: echo stream_get_contents($o); 26: return $o; 27: } 28: 29: echo "temp stream (close after):\n"; 30: fclose(do_stuff("php://temp")); 31: 32: echo "\nmemory stream (close after):\n"; 33: fclose(do_stuff("php://memory")); 34: 1.1.1.2 ! misho 35: echo "\ntemp stream (leak):\n"; ! 36: leak_variable(do_stuff("php://temp"), true); ! 37: ! 38: echo "\nmemory stream (leak):\n"; ! 39: leak_variable(do_stuff("php://memory"), true); ! 40: 1.1 misho 41: echo "\nDone.\n"; 1.1.1.2 ! misho 42: --EXPECTF-- 1.1 misho 43: temp stream (close after): 44: About to rewind! 1.1.1.2 ! misho 45: * About to connect() to 127.0.0.1 port 37349%r.*%r 1.1 misho 46: * Trying 127.0.0.1... * Connection refused 47: * couldn't connect to host 48: * Closing connection #0 49: 50: memory stream (close after): 51: About to rewind! 1.1.1.2 ! misho 52: * About to connect() to 127.0.0.1 port 37349%r.*%r ! 53: * Trying 127.0.0.1... * Connection refused ! 54: * couldn't connect to host ! 55: * Closing connection #0 ! 56: ! 57: temp stream (leak): ! 58: About to rewind! ! 59: * About to connect() to 127.0.0.1 port 37349%r.*%r ! 60: * Trying 127.0.0.1... * Connection refused ! 61: * couldn't connect to host ! 62: * Closing connection #0 ! 63: ! 64: memory stream (leak): ! 65: About to rewind! ! 66: * About to connect() to 127.0.0.1 port 37349%r.*%r 1.1 misho 67: * Trying 127.0.0.1... * Connection refused 68: * couldn't connect to host 69: * Closing connection #0 70: 71: Done.