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>