Annotation of embedaddon/php/ext/curl/tests/bug54798.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Bug #54798 (Segfault when CURLOPT_STDERR file pointer is closed before calling curl_exec)
3: --SKIPIF--
4: <?php
5: if (!extension_loaded("curl")) {
6: exit("skip curl extension not loaded");
7: }
8: if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
9: exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
10: }
11: ?>
12: --FILE--
13: <?php
14:
15: function checkForClosedFilePointer($host, $curl_option, $description) {
16: $fp = fopen(dirname(__FILE__) . '/bug54798.tmp', 'w+');
17:
18: $ch = curl_init();
19:
20: // we also need CURLOPT_VERBOSE to be set to test CURLOPT_STDERR properly
21: if (CURLOPT_STDERR == $curl_option) {
22: curl_setopt($ch, CURLOPT_VERBOSE, 1);
23: }
24:
25: if (CURLOPT_INFILE == $curl_option) {
26: curl_setopt($ch, CURLOPT_UPLOAD, 1);
27: }
28:
29: curl_setopt($ch, $curl_option, $fp);
30:
31: curl_setopt($ch, CURLOPT_URL, $host);
32: curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
33:
34: fclose($fp); // <-- premature close of $fp caused a crash!
35:
36: curl_exec($ch);
37:
38: curl_close($ch);
39:
40: echo "Ok for $description\n";
41: }
42:
43: $options_to_check = array(
44: "CURLOPT_STDERR",
45: "CURLOPT_WRITEHEADER",
46: "CURLOPT_FILE",
47: "CURLOPT_INFILE"
48: );
49:
50: $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
51: foreach($options_to_check as $option) {
52: checkForClosedFilePointer($host, constant($option), $option);
53: }
54:
55: ?>
56: --CLEAN--
57: <?php @unlink(dirname(__FILE__) . '/bug54798.tmp'); ?>
58: --EXPECTF--
59: Warning: curl_exec(): CURLOPT_STDERR resource has gone away, resetting to stderr in %sbug54798.php on line %d
60: * About to connect() %a
61: * Closing connection #%d
62: Ok for CURLOPT_STDERR
63:
64: Warning: curl_exec(): CURLOPT_WRITEHEADER resource has gone away, resetting to default in %sbug54798.php on line 24
65: Ok for CURLOPT_WRITEHEADER
66:
67: Warning: curl_exec(): CURLOPT_FILE resource has gone away, resetting to default in %sbug54798.php on line 24
68: %a
69: Ok for CURLOPT_FILE
70:
71: Warning: curl_exec(): CURLOPT_INFILE resource has gone away, resetting to default in %sbug54798.php on line %d
72: Ok for CURLOPT_INFILE
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>