Annotation of embedaddon/php/ext/curl/tests/bug54798.phpt, revision 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>