Commit graph

105 commits

Author SHA1 Message Date
Andrey Hristov
16c6ce94d2 Update on the mysqlnd auth plugins, changed the plugin
structure and where they load themselves.
0xFE packets (method switch) needs to be done, additional
wire-level packet to be created to be parsed and the packet
doesn't fit the PACKET_OK structure anymore.
2011-01-14 20:04:17 +00:00
Andrey Hristov
429e07bba2 grok the MySQL 5.5 extended handshake.
Move the authentication routines, the native ones, to
separate file and encapsulate them in a plugin.
Depending on the server version and what the server
requests (or doesn't in old versions) load the authentication
plugin to handle it.
Currently only the 4.1+ authentication is supported. More to come
2011-01-12 21:40:05 +00:00
Andrey Hristov
ddbbcdce49 Use common code to handle initial authentication and
COM_CHANGE_USER
2011-01-11 13:02:57 +00:00
Felipe Pena
0203cc3d44 - Year++ 2011-01-01 02:17:06 +00:00
Andrey Hristov
bcb4c8427e two new stats 2010-11-05 20:07:34 +00:00
Andrey Hristov
223832c501 rename parameter name - should not shadow the global symbol alloca 2010-10-05 17:20:00 +00:00
Andrey Hristov
a9da84800e add some safe casts 2010-10-05 11:08:21 +00:00
Andrey Hristov
a3f2895e67 fix types 2010-10-05 08:56:21 +00:00
Andrey Hristov
026da7d4a0 fix two more warnings 2010-10-04 14:52:14 +00:00
Andrey Hristov
859a1404bf WS fixes 2010-09-23 16:03:22 +00:00
Andrey Hristov
9da177f8d5 Allocate memory in a burst mode, and later use it. Increases
locality of the data.
Also use MYSQLND_INC_CONN_STATISTIC in one place, instead of
two, thus removing code duplication from macro expansion - less
code to fit in the instruction cache.
2010-08-12 13:23:16 +00:00
Andrey Hristov
c974313aed Switch from using PHP_MAJOR_VERSION to separate define for
unicode. Unicode is no more, but these are "bookmarks" where
to change mysqlnd, if Unicode becomes trendy again.
2010-08-12 12:02:02 +00:00
Andrey Hristov
baf72b7336 Fix sprintf modifiers all around the place. In most cases
%u should be used. Where size_t is used then MYSQLND_SZ_T_SPEC should be
the modifier
2010-06-21 15:32:26 +00:00
Andrey Hristov
523960892c fix valgrind warnings on 64bit, thread_is is strictly 32bit 2010-06-21 14:49:45 +00:00
Andrey Hristov
d3d7447803 fix type mismatch, this is fresh misunderstanding 2010-06-18 11:56:25 +00:00
Andrey Hristov
59205a6655 split mysqlnd_connect() in two parts, one doing the authorization 2010-06-17 11:37:49 +00:00
Andrey Hristov
d02e785d68 Handle problems in the row_decoder, return type used to be void,
now it can return on problems.
2010-05-31 17:57:03 +00:00
Ulf Wendel
73a32c52d2 Updating test to reflect the latest and more verbose mysqlnd error messages, updating mysqlnd error message as well. 2010-05-31 13:56:42 +00:00
Andrey Hristov
decdfeeeb2 Access memory which was really allocated 2010-05-25 22:34:47 +00:00
Andrey Hristov
faf4659295 Export MYSQLND_PROTOCOL methods 2010-05-14 13:32:27 +00:00
Andrey Hristov
dd85f9c2f2 OOM fixes 2010-05-14 13:04:33 +00:00
Andrey Hristov
d53337bbe7 OOM stability fixes 2010-05-04 14:02:42 +00:00
Andrey Hristov
c32bae720c Handle OOM in block_alloc_get_chunk, and also in the caller
in mysqlnd_wireprotocol.c
2010-05-03 16:20:46 +00:00
Andrey Hristov
ec0fe858c6 Remove unused parameter 2010-05-03 16:09:05 +00:00
Andrey Hristov
8e8348a4b0 Handle OOM when resizing blocks during data fetch 2010-05-03 14:16:04 +00:00
Andrey Hristov
6c1a2831f6 Fix crash if OOM and USE_ZEND_ALLOC=0 2010-04-29 11:49:08 +00:00
Andrey Hristov
6d88d1a75e Fixed few buffer overflows reported by Stefan Esser. 2010-04-28 15:35:52 +00:00
Andrey Hristov
16d5d5966e const-ify fields 2010-04-28 12:29:13 +00:00
Andrey Hristov
6dec27d58b Hardening the reads of mysqlnd.
All packets but the row data packet are read into preallocated buffer,
either on the stack or on the heap (cmd_buffer). The size of the buffer
is always checked to skip buffer overruns. Only up to the size of the
buffer is stored into the buffer but packet->header.size has the size of
all data sent. In this case network layer bails.

This patch hardenes the reads, so if packets are malformed and shorter
than they should be there will be no further reads in the buffer.
In short, detection of malformed packets.
2010-04-20 20:02:32 +00:00
Andrey Hristov
f2d23c7f37 put the trigger in the right place 2010-04-20 19:09:56 +00:00
Andrey Hristov
eda9959e36 It is possible that change user tries an user who has old password.
Instead of error message that doesn't say much there is more information now.
2010-04-20 18:04:24 +00:00
Felipe Pena
6d951e2ded - Fix copyrights 2010-04-20 13:50:34 +00:00
Andrey Hristov
fb76a3f2db Last batch of int/uint comparison fixes 2010-04-15 15:58:26 +00:00
Andrey Hristov
7f43fc3b02 More int/uint comparison warning fixes 2010-04-15 15:53:58 +00:00
Andrey Hristov
a9880e78c6 CS + WS changes 2010-04-15 12:55:04 +00:00
Andrey Hristov
c04f752625 Fix for bug#49234 method not found ssl_set
Patch was tested and compiles on Windows. (Thanks Kalle)
2010-04-15 11:01:30 +00:00
Andrey Hristov
c0531d8db0 Fixint INT_AND_FLOAT_AS native. It was working ok on 64bit but
because on 32bit SIZEOF_LONG is 4 and INT64 from MySQL is 8 everything
was converted to string, even if it was able to put it in a long.
This closes Request #50651 Native type cast returns wrong result
2010-04-08 13:20:37 +00:00
Andrey Hristov
d339672e45 Fix inconsistencies
- memory allocated with spprintf, or likes, outside of mysqlnd's
allocator functions should not be freed by the mysqlnd's allocator
(a wrapper around emalloc/malloc).
- memory allocated by the mysqlnd's allocator should only be freed
  by it.
- add a mode to track memory usage (malloc/free)
2010-04-01 13:26:41 +00:00
Andrey Hristov
4870cac70e Make it coupled - what is allocated with mnd_ should be freed
with mnd_ and vice versa.
Added mnd_pestrndup and mnd_pestrdup, which wrap the normal
calls to be able to track this calls.
Fixed some failing tests.
2010-03-29 17:04:16 +00:00
Andrey Hristov
7868bca437 Fix tests that fail when the MySQL's socket file is not /tmp/mysql.sock
as it is in when compiled from source and the default for mysqlnd.
SuSE for example uses /var/run/mysql/mysql.sock . Also, sql.safe_mode
(ext/mysql and ingres) needs the socket.
Fix possible crashes in mysqlnd. When packets are shorter, functions should
return error.
2010-03-26 16:58:25 +00:00
Andrey Hristov
564a1d07f8 allow persistency of PS 2010-03-12 13:03:46 +00:00
Andrey Hristov
0e71a58662 Fix second bug in that code, + instead of += thus not increasing
a pointer and mangling data. Again, ext/mysql and ext/mysqli doesn't
have access to this codepath.
2010-02-01 17:12:40 +00:00
Andrey Hristov
228b68bbab Fix a bug in mysqlnd where a pointer was not incremented
and thus wrong data was saved MYSQLND_FIELD::db. However, this
wasn't caught because there is no code in mysql/mysqli/pdo_mysql
which reads that field of the structure. The problem was found
during code review.
2010-02-01 16:12:03 +00:00
Andrey Hristov
7ff1184be2 make mysqlnd's tracing API more reusable 2010-01-13 14:06:02 +00:00
Andrey Hristov
68cd1b8e86 more typedef cosmetics 2010-01-11 20:18:56 +00:00
Andrey Hristov
a449a371a8 cosmetics. typedef-ed types should be in capital case 2010-01-11 20:10:10 +00:00
Andrey Hristov
9939429f4e remove extern defintion of a variable that is no more
used outside of the file where it is declared.
Also really export with PHPAPI the protocol init/deinit functions
2010-01-11 19:13:43 +00:00
Andrey Hristov
a98a67940a improve the stats subsystem. Reduce the number of macro definitions
in half by smartly introducing 2 new macros. Make MYSQLND::stats a pointer
from being aggregated and add triggers.
2010-01-08 17:35:20 +00:00
Andrey Hristov
fcef58951b add restart_psession and end_psession hooks 2010-01-08 13:47:03 +00:00
Andrey Hristov
81b0630f5a Change of way the packet objects are created/initialised
If the protocol gets changed, ever, we can decide at runtime
easily which protocol to use by instantiating the right protocol
object. But this is restricted to the structure of the packets, not
the flow.
2010-01-07 19:44:59 +00:00