From 9b468d95772ce54e603be9033baaa41b25345a16 Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Thu, 29 Apr 2010 11:49:08 +0000 Subject: [PATCH] Fix crash if OOM and USE_ZEND_ALLOC=0 --- ext/mysqlnd/mysqlnd_wireprotocol.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.c b/ext/mysqlnd/mysqlnd_wireprotocol.c index 4a831b0cfc..3eb9159227 100644 --- a/ext/mysqlnd/mysqlnd_wireprotocol.c +++ b/ext/mysqlnd/mysqlnd_wireprotocol.c @@ -705,7 +705,7 @@ size_t php_mysqlnd_cmd_write(void *_packet, MYSQLND *conn TSRMLS_DC) MYSQLND_PACKET_COMMAND *packet= (MYSQLND_PACKET_COMMAND *) _packet; MYSQLND_NET *net = conn->net; unsigned int error_reporting = EG(error_reporting); - size_t written; + size_t written = 0; DBG_ENTER("php_mysqlnd_cmd_write"); /* @@ -734,6 +734,9 @@ size_t php_mysqlnd_cmd_write(void *_packet, MYSQLND *conn TSRMLS_DC) size_t tmp_len = packet->arg_len + 1 + MYSQLND_HEADER_SIZE, ret; zend_uchar *tmp, *p; tmp = (tmp_len > net->cmd_buffer.length)? mnd_emalloc(tmp_len):net->cmd_buffer.buffer; + if (!tmp) { + goto end; + } p = tmp + MYSQLND_HEADER_SIZE; /* skip the header */ int1store(p, packet->command); @@ -748,6 +751,7 @@ size_t php_mysqlnd_cmd_write(void *_packet, MYSQLND *conn TSRMLS_DC) } written = ret; } +end: if (error_reporting) { /* restore error reporting */ EG(error_reporting) = error_reporting; -- 2.40.0