Annotation of embedaddon/php/ext/mysqli/tests/mysqli_insert_packet_overflow.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: INSERT and packet overflow
3: --SKIPIF--
4: <?php
5: require_once('skipif.inc');
6: require_once('skipifconnectfailure.inc');
7:
8: if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
9: die(sprintf("SKIP [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));
10:
11: $max_len = pow(2, 24);
12: if (!$res = mysqli_query($link, "SHOW GLOBAL VARIABLES LIKE 'max_allowed_packet'"))
13: die(sprintf("SKIP [%d] %s\n", mysqli_errno($link), mysqli_error($link)));
14:
15: if (!mysqli_query($link, "SET NAMES 'latin1'"))
16: die(sprintf("SKIP [%d] %s\n", mysqli_errno($link), mysqli_error($link)));
17:
18: mysqli_close($link);
19: ?>
20: --INI--
21: memory_limit=256M
22: --FILE--
23: <?php
24: require('connect.inc');
25: if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
26: printf("[001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
27:
28: if (!$res = mysqli_query($link, "SHOW GLOBAL VARIABLES LIKE 'max_allowed_packet'"))
29: printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
30:
31: if (!$row = mysqli_fetch_assoc($res))
32: printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
33:
34: mysqli_free_result($res);
35:
36: if (0 === ($org_max_allowed_packet = (int)$row['Value']))
37: printf("[004] Cannot determine max_allowed_packet size and/or bogus max_allowed_packet setting used.\n");
38:
39: $max_len = pow(2, 24);
40: if ($org_max_allowed_packet < $max_len) {
41: if (!mysqli_query($link, "SET GLOBAL max_allowed_packet = " . ($max_len + 100))) {
42: if (1227 == mysqli_errno($link)) {
43: /* [1227] Access denied; you need the SUPER privilege for this operation */
44: print "done!";
45: exit(0);
46: } else {
47: printf("[005] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
48: }
49: }
50: }
51: mysqli_close($link);
52: if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
53: printf("[006] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
54:
55: if (!mysqli_query($link, "SET NAMES 'latin1'"))
56: printf("[007] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
57:
58: if (!$res = mysqli_query($link, "SHOW GLOBAL VARIABLES LIKE 'max_allowed_packet'"))
59: printf("[008] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
60:
61: if (!$row = mysqli_fetch_assoc($res))
62: printf("[009] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
63:
64: mysqli_free_result($res);
65:
66: if (0 === ($max_allowed_packet = (int)$row['Value']))
67: printf("[010] Cannot determine max_allowed_packet size and/or bogus max_allowed_packet setting used.\n");
68:
69: $max_len = pow(2, 24);
70: if ($max_allowed_packet < $max_len) {
71: printf("[011] Failed to change max_allowed_packet");
72: }
73:
74: if (!mysqli_query($link, "CREATE TABLE test(col_blob LONGBLOB) ENGINE=" . $engine))
75: printf("[012] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
76:
77: $query_prefix = "INSERT INTO test(col_blob) VALUES ('";
78: $query_postfix = "')";
79: $query_len = strlen($query_prefix) + strlen($query_postfix);
80: $com_query_len = 2;
81:
82:
83: $blob = str_repeat('a', $max_len - $com_query_len - $query_len);
84: $query = sprintf("%s%s%s", $query_prefix, $blob, $query_postfix);
85:
86: if (!mysqli_query($link, $query))
87: printf("[013] max_allowed_packet = %d, strlen(query) = %d, [%d] %s\n", $max_allowed_packet, strlen($query), mysqli_errno($link), mysqli_error($link));
88:
89: if (!$res = mysqli_query($link, "SELECT col_blob FROM test"))
90: printf("[014] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
91:
92: if (!$row = mysqli_fetch_assoc($res)) {
93: printf("[015] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
94: } else {
95: if ($row['col_blob'] != $blob) {
96: printf("[016] Blob seems wrong, dumping data\n");
97: var_dump(strlen($row['col_blob']));
98: var_dump(strlen($blob));
99: }
100: mysqli_free_result($res);
101: }
102:
103: if (!mysqli_query($link, "SET GLOBAL max_allowed_packet = " . $org_max_allowed_packet))
104: if (1227 != mysqli_errno($link))
105: printf("[017] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
106:
107: mysqli_close($link);
108:
109: print "done!";
110: ?>
111: --CLEAN--
112: <?php
113: require_once("clean_table.inc");
114: ?>
115: --EXPECTF--
116: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>