From: <di...@us...> - 2011-12-26 13:51:52
|
Revision: 53763 http://firebird.svn.sourceforge.net/firebird/?rev=53763&view=rev Author: dimitr Date: 2011-12-26 13:51:45 +0000 (Mon, 26 Dec 2011) Log Message: ----------- A patch resolving client-side crashes with a new fbclient. Thanks to Alex. Modified Paths: -------------- firebird/trunk/src/remote/client/interface.cpp firebird/trunk/src/remote/remote.h Modified: firebird/trunk/src/remote/client/interface.cpp =================================================================== --- firebird/trunk/src/remote/client/interface.cpp 2011-12-26 13:35:26 UTC (rev 53762) +++ firebird/trunk/src/remote/client/interface.cpp 2011-12-26 13:51:45 UTC (rev 53763) @@ -5850,8 +5850,16 @@ } // send answer (may be empty) to server - packet->p_operation = op_cont_auth; - cBlock.extractDataFromPluginTo(&packet->p_auth_cont); + if (port->port_protocol >= PROTOCOL_VERSION13) + { + packet->p_operation = op_cont_auth; + cBlock.extractDataFromPluginTo(&packet->p_auth_cont); + } + else + { + packet->p_operation = op_trusted_auth; + cBlock.extractDataFromPluginTo(&packet->p_trau.p_trau_data); + } send_packet(port, packet); memset(&packet->p_auth_cont, 0, sizeof packet->p_auth_cont); } @@ -7054,11 +7062,16 @@ } } +void ClntAuthBlock::extractDataFromPluginTo(CSTRING* to) +{ + to->cstr_length = dataFromPlugin.getCount(); + to->cstr_address = dataFromPlugin.begin(); + to->cstr_allocated = 0; +} + void ClntAuthBlock::extractDataFromPluginTo(P_AUTH_CONT* to) { - to->p_data.cstr_length = dataFromPlugin.getCount(); - to->p_data.cstr_address = dataFromPlugin.begin(); - to->p_data.cstr_allocated = 0; + extractDataFromPluginTo(&to->p_data); PathName pluginName = getPluginName(); to->p_name.cstr_length = pluginName.length(); Modified: firebird/trunk/src/remote/remote.h =================================================================== --- firebird/trunk/src/remote/remote.h 2011-12-26 13:35:26 UTC (rev 53762) +++ firebird/trunk/src/remote/remote.h 2011-12-26 13:51:45 UTC (rev 53763) @@ -621,6 +621,7 @@ void storeDataForPlugin(unsigned int length, const unsigned char* data); void resetDataFromPlugin(); void extractDataFromPluginTo(Firebird::ClumpletWriter& dpb, const ParametersSet* tags, int protocol); + void extractDataFromPluginTo(CSTRING* to); void extractDataFromPluginTo(P_AUTH_CONT* to); void load(Firebird::ClumpletReader& dpb, const ParametersSet*); void extractDataFromPluginTo(Firebird::ClumpletWriter& user_id); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |