1
+ --TEST--
2
+ GH-8058 (NULL pointer dereference in mysqlnd package (#81706))
3
+ --SKIPIF--
4
+ <?php
5
+ require_once 'skipif.inc ' ;
6
+ require_once 'skipifconnectfailure.inc ' ;
7
+ ?>
8
+ --FILE--
9
+ <?php
10
+ require_once "connect.inc " ;
11
+
12
+ mysqli_report (MYSQLI_REPORT_OFF );
13
+ $ mysqli = new my_mysqli ($ host , $ user , $ passwd , $ db , $ port , $ socket );
14
+
15
+ // There should be no segfault due to NULL deref
16
+ $ stmt = $ mysqli ->prepare ("select 1,2,3 " );
17
+ $ stmt ->bind_result ($ a ,$ a ,$ a );
18
+ $ stmt ->prepare ("" );
19
+ $ stmt ->prepare ("select " .str_repeat ("'A', " , 0x1201 )."1 " );
20
+ unset($ stmt ); // trigger dtor
21
+
22
+ // There should be no memory leak
23
+ $ stmt = $ mysqli ->prepare ("select 1,2,3 " );
24
+ $ stmt ->bind_result ($ a ,$ a ,$ a );
25
+ $ stmt ->prepare ("" );
26
+ $ stmt ->prepare ("select 1 " );
27
+ unset($ stmt ); // trigger dtor
28
+
29
+ mysqli_report (MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
30
+ $ stmt = $ mysqli ->prepare ("select 1,2,3 " );
31
+ try {
32
+ // We expect an exception to be thrown
33
+ $ stmt ->prepare ("" );
34
+ } catch (mysqli_sql_exception $ e ) {
35
+ var_dump ($ e ->getMessage ());
36
+ }
37
+ ?>
38
+ --EXPECT--
39
+ string(15) "Query was empty"
0 commit comments