From d0f62c960f5c6fdd09e5e7e6a9f9eefd41d70026 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Wed, 19 Oct 2005 14:11:25 +0000 Subject: [PATCH] Fixed bug #34623 (Crash in pdo_mysql on longtext fields). --- ext/pdo_mysql/mysql_statement.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ext/pdo_mysql/mysql_statement.c b/ext/pdo_mysql/mysql_statement.c index 1c819a623a..9a48b128a0 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; + } } S->bound_result[i].buffer = emalloc(S->bound_result[i].buffer_length); S->bound_result[i].is_null = &S->out_null[i]; -- 2.40.0