1--TEST-- 2Bug #70949 (SQL Result Sets With NULL Can Cause Fatal Memory Errors) 3--EXTENSIONS-- 4mysqli 5--SKIPIF-- 6<?php 7require_once('skipifconnectfailure.inc'); 8require_once("connect.inc"); 9if (!$IS_MYSQLND) { 10 die("skip mysqlnd only test"); 11} 12?> 13--FILE-- 14<?php 15require_once("connect.inc"); 16$mysql = new my_mysqli($host, $user, $passwd, $db, $port, $socket); 17 18$mysql->query("DROP TABLE IF EXISTS bug70949"); 19$mysql->query("CREATE TABLE bug70949(name varchar(255))"); 20$mysql->query("INSERT INTO bug70949 VALUES ('dummy'),(NULL),('foo'),('bar')"); 21 22$sql = "select * from bug70949"; 23 24if ($stmt = $mysql->prepare($sql)) 25{ 26 $stmt->attr_set(MYSQLI_STMT_ATTR_CURSOR_TYPE, MYSQLI_CURSOR_TYPE_READ_ONLY); 27 28 if ($stmt->bind_result($name)) { 29 { 30 if ($stmt->execute()) 31 { 32 while ($stmt->fetch()) 33 { 34 var_dump($name); 35 } 36 } 37 } 38 39 $stmt->free_result(); 40 $stmt->close(); 41 } 42 43 44 $mysql->close(); 45} 46 47?> 48--CLEAN-- 49<?php 50require_once("connect.inc"); 51if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) 52 printf("[c001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); 53 54if (!mysqli_query($link, "DROP TABLE IF EXISTS bug70949")) 55 printf("[c002] Cannot drop table, [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 56 57mysqli_close($link); 58?> 59--EXPECT-- 60string(5) "dummy" 61NULL 62string(3) "foo" 63string(3) "bar" 64