Annotation of embedaddon/php/ext/mysqli/tests/mysqli_insert_packet_overflow.phpt, revision 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>