summaryrefslogtreecommitdiff
path: root/ext/pdo_mysql/mysql_statement.c
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2005-10-19 14:11:56 +0000
committerIlia Alshanetsky <iliaa@php.net>2005-10-19 14:11:56 +0000
commit4d0439e4879ec9b1f6b6120ef0b45ffc1dc02e2f (patch)
tree5e16126b7b643ff16eed6c38c56e392841fd7f16 /ext/pdo_mysql/mysql_statement.c
parent5916b8dd0489e495fdd0ddc8d70676238373b232 (diff)
downloadphp-git-4d0439e4879ec9b1f6b6120ef0b45ffc1dc02e2f.tar.gz
MFH: Fixed bug #34623 (Crash in pdo_mysql on longtext fields).
Diffstat (limited to 'ext/pdo_mysql/mysql_statement.c')
-rwxr-xr-xext/pdo_mysql/mysql_statement.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/ext/pdo_mysql/mysql_statement.c b/ext/pdo_mysql/mysql_statement.c
index f48f6da9a1..98d3990fd6 100755
--- a/ext/pdo_mysql/mysql_statement.c
+++ b/ext/pdo_mysql/mysql_statement.c
@@ -71,6 +71,8 @@ static int pdo_mysql_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC)
return 1;
}
+#define PDO_MYSQL_MAX_BUFFER 1024*1024 /* 1 megabyte */
+
static int pdo_mysql_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC)
{
pdo_mysql_stmt *S = (pdo_mysql_stmt*)stmt->driver_data;
@@ -141,6 +143,10 @@ static int pdo_mysql_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC)
S->bound_result[i].buffer_length =
S->fields[i].max_length? S->fields[i].max_length:
S->fields[i].length;
+ /* work-around for longtext and alike */
+ if (S->bound_result[i].buffer_length > PDO_MYSQL_MAX_BUFFER) {
+ S->bound_result[i].buffer_length = PDO_MYSQL_MAX_BUFFER;
+ }
}
#if 0
printf("%d: max_length=%d length=%d buffer_length=%d type=%d\n",