summaryrefslogtreecommitdiff
path: root/ext/mysqlnd/mysqlnd_wireprotocol.c
diff options
context:
space:
mode:
authorAndrey Hristov <andrey@php.net>2010-04-29 11:49:08 +0000
committerAndrey Hristov <andrey@php.net>2010-04-29 11:49:08 +0000
commit9b468d95772ce54e603be9033baaa41b25345a16 (patch)
tree7f1db0b919b060409bbf3303a2afefce6a8c18dd /ext/mysqlnd/mysqlnd_wireprotocol.c
parentc033a81b50d75677caeb944c69a716f9269b660c (diff)
downloadphp-git-9b468d95772ce54e603be9033baaa41b25345a16.tar.gz
Fix crash if OOM and USE_ZEND_ALLOC=0
Diffstat (limited to 'ext/mysqlnd/mysqlnd_wireprotocol.c')
-rw-r--r--ext/mysqlnd/mysqlnd_wireprotocol.c6
1 files changed, 5 insertions, 1 deletions
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;