????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 3.15.203.168 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/self/root/home/b8009/php-5.6.22/ext/mysqli/tests/ |
Upload File : |
--TEST-- Bug #49422 (mysqlnd: mysqli_real_connect() and LOAD DATA INFILE crash) --SKIPIF-- <?php require_once('skipif.inc'); require_once('skipifconnectfailure.inc'); $link = mysqli_init(); if (!my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket)) { die(sprintf("skip Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error())); } include_once("local_infile_tools.inc"); if ($msg = check_local_infile_support($link, $engine)) die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); mysqli_close($link); ?> --INI-- mysqli.allow_local_infile=1 mysqli.allow_persistent=1 mysqli.max_persistent=1 --FILE-- <?php include ("connect.inc"); $link = mysqli_init(); if (!my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket)) { printf("[001] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); } if (!mysqli_query($link, 'DROP TABLE IF EXISTS test')) { printf("[002] Failed to drop old test table: [%d] %s\n", mysqli_errno($link), mysqli_error($link)); } if (!mysqli_query($link, 'CREATE TABLE test(id INT, label CHAR(1), PRIMARY KEY(id)) ENGINE=' . $engine)) { printf("[003] Failed to create test table: [%d] %s\n", mysqli_errno($link), mysqli_error($link)); } include("local_infile_tools.inc"); $file = create_standard_csv(4); if (!@mysqli_query($link, sprintf("LOAD DATA LOCAL INFILE '%s' INTO TABLE test FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\'' LINES TERMINATED BY '\n'", mysqli_real_escape_string($link, $file)))) { printf("[005] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); } if (!$res = mysqli_query($link, "SELECT * FROM test ORDER BY id")) printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); $rows = array(); while ($row = mysqli_fetch_assoc($res)) { var_dump($row); $rows[] = $row; } mysqli_free_result($res); mysqli_query($link, "DELETE FROM test"); mysqli_close($link); if ($IS_MYSQLND) { /* mysqlnd makes a connection created through mysql_init()/mysqli_real_connect() always a 'persistent' one. At this point 'persistent' is not to be confused with what a user calls a 'persistent' - in this case 'persistent' means that mysqlnd uses malloc() instead of emalloc(). nothing else. ext/mysqli will not consider it as a 'persistent' connection in a user sense, ext/mysqli will not appy max_persistent etc. Its only about malloc() vs. emalloc(). However, the bug is about malloc() and efree(). You can make make mysqlnd use malloc() by either using pconnect or mysql_init() - so we should test pconnect as well.. */ $host = 'p:' . $host; if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) { printf("[007] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); } /* bug happened during query processing */ if (!@mysqli_query($link, sprintf("LOAD DATA LOCAL INFILE '%s' INTO TABLE test FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\'' LINES TERMINATED BY '\n'", mysqli_real_escape_string($link, $file)))) { printf("[008] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); } /* we survived? that's good enough... */ if (!$res = mysqli_query($link, "SELECT * FROM test ORDER BY id")) printf("[009] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); $i = 0; while ($row = mysqli_fetch_assoc($res)) { if (($row['id'] != $rows[$i]['id']) || ($row['label'] != $rows[$i]['label'])) { printf("[010] Wrong values, check manually!\n"); } $i++; } mysqli_close($link); } print "done!"; ?> --CLEAN-- <?php require_once("clean_table.inc"); ?> --EXPECTF-- array(2) { [%u|b%"id"]=> %unicode|string%(2) "97" [%u|b%"label"]=> %unicode|string%(1) "x" } array(2) { [%u|b%"id"]=> %unicode|string%(2) "98" [%u|b%"label"]=> %unicode|string%(1) "y" } array(2) { [%u|b%"id"]=> %unicode|string%(2) "99" [%u|b%"label"]=> %unicode|string%(1) "z" } done!