xref: /PHP-8.1/ext/mysqli/tests/bug70949.phpt (revision b5a14e6c)
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