8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-23 06:03:02 +01:00

FB3 seems to be properly protected from CORE-4983 at the y-valve level, but I'm adding an additional protection for the engine anyway (call me paranoid).

This commit is contained in:
dimitr 2015-11-17 11:46:21 +00:00
parent ff1222c994
commit ec6d38eb47

View File

@ -264,6 +264,12 @@ bool DsqlDmlRequest::fetch(thread_db* tdbb, UCHAR* msgBuffer)
}
}
if (!req_request)
{
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-504) <<
Arg::Gds(isc_unprepared_stmt));
}
dsql_msg* message = (dsql_msg*) statement->getReceiveMsg();
// Set up things for tracing this call
@ -650,6 +656,12 @@ void DsqlDmlRequest::execute(thread_db* tdbb, jrd_tra** traHandle,
Firebird::IMessageMetadata* outMetadata, UCHAR* outMsg,
bool singleton)
{
if (!req_request)
{
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-504) <<
Arg::Gds(isc_unprepared_stmt));
}
// If there is no data required, just start the request
const dsql_msg* message = statement->getSendMsg();
@ -672,10 +684,7 @@ void DsqlDmlRequest::execute(thread_db* tdbb, jrd_tra** traHandle,
// Selectable execute block should get the "proc fetch" flag assigned,
// which ensures that the savepoint stack is preserved while suspending
if (statement->getType() == DsqlCompiledStatement::TYPE_SELECT_BLOCK)
{
fb_assert(req_request);
req_request->req_flags |= req_proc_fetch;
}
// TYPE_EXEC_BLOCK has no outputs so there are no out_msg
// supplied from client side, but TYPE_EXEC_BLOCK requires