Annotation of embedaddon/php/ext/mysqli/tests/mysqli_set_local_infile_handler_openbasedir.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: mysqli_set_local_infile_handler() - open basedir restrictions
                      3: --SKIPIF--
                      4: <?php
                      5: if (!$fp = @fopen('skipif.inc', 'r'))
                      6:   die("skip open_basedir restrictions forbid opening include files");
                      7: 
                      8: include_once('skipif.inc');
                      9: include_once('skipifemb.inc');
                     10: include_once('skipifconnectfailure.inc');
                     11: 
                     12: if (!function_exists('mysqli_set_local_infile_handler'))
                     13:        die("skip - function not available.");
                     14: 
                     15: include_once('connect.inc');
                     16: if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
                     17:        die("skip Cannot connect to MySQL");
                     18: 
                     19: if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
                     20:        mysqli_close($link);
                     21:        die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
                     22: }
                     23: 
                     24: include_once("local_infile_tools.inc");
                     25: if ($msg = check_local_infile_support($link, $engine))
                     26:        die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
                     27: 
                     28: mysqli_close($link);
                     29: ?>
                     30: --INI--
                     31: open_basedir="."
                     32: --FILE--
                     33: <?php
                     34:        @include('connect.inc');
                     35:        if (!isset($db)) {
                     36:                // stupid run-tests.php - any idea how to set system ini setting dynamically???
                     37:                print "Warning: tempnam(): open_basedir restriction in effect. File(grrr) is not within the allowed path(s): (grrr) in grrr on line 0
                     38: [005 + 1] Cannot create CVS file ''
                     39: Callback set to 'callback_simple'
                     40: [012] LOAD DATA failed, [0] grrr
                     41: [014/0] [0] ''
                     42: done!";
                     43:                die();
                     44:        }
                     45: 
                     46:        require_once('connect.inc');
                     47:        require_once('local_infile_tools.inc');
                     48:        require_once('table.inc');
                     49: 
                     50:        function callback_simple($fp, &$buffer, $buflen, &$error) {
                     51:                static $invocation = 0;
                     52: 
                     53:                printf("Callback: %d\n", $invocation);
                     54: 
                     55:                $invocation++;
                     56:                if (!is_resource($fp))
                     57:                        printf("[012] First argument passed to callback is not a resource but %s/%s\n",
                     58:                                $fp, gettype($fp));
                     59: 
                     60:                if (!$buffer = fread($fp, $buflen)) {
                     61:                        if ($invocation == 1) {
                     62:                                printf("[013] Cannot read from stream\n");
                     63:                                        $error = 'Cannot read from stream';
                     64:                        } else {
                     65:                                return strlen($buffer);
                     66:                        }
                     67:                }
                     68: 
                     69:                $lines = explode("\n", $buffer);
                     70:                if (count($lines) != 4 && strlen($buffer) > 0) {
                     71:                        printf("[014] Test is too simple to handle a buffer of size %d that cannot hold all lines\n", $buflen);
                     72:                        $error = 'Parser too simple';
                     73:                }
                     74: 
                     75:                $buffer = '';
                     76:                foreach ($lines as $k => $line) {
                     77:                        if ('' === trim($line))
                     78:                                continue;
                     79: 
                     80:                        $columns = explode(';', $line);
                     81:                        if (empty($columns)) {
                     82:                                printf("[015] Cannot parse columns\n");
                     83:                                $error = 'Cannot parse columns';
                     84:                        }
                     85: 
                     86:                        // increase id column value
                     87:                        $columns[0] += 1;
                     88:                        $buffer .= implode(';', $columns);
                     89:                        $buffer .= "\n";
                     90:                }
                     91: 
                     92:                return strlen($buffer);
                     93:        }
                     94: 
                     95:        $file = create_standard_csv(5);
                     96:        $expected = array(
                     97:                array('id' => 98,   'label' => 'x'),
                     98:                array('id' => 99,   'label' => 'y'),
                     99:                array('id' => 100,  'label' => 'z'),
                    100:        );
                    101:        try_handler(10, $link, $file, 'callback_simple', $expected);
                    102:        mysqli_close($link);
                    103:        print "done!";
                    104: ?>
                    105: --CLEAN--
                    106: <?php
                    107:        require_once("clean_table.inc");
                    108: ?>
                    109: --EXPECTF--
                    110: Warning: tempnam(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (%s) in %s on line %d
                    111: [005 + 1] Cannot create CVS file ''
                    112: Callback set to 'callback_simple'
                    113: [012] LOAD DATA failed, [%d] %s
                    114: [014/0] [0] ''
                    115: done!

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>