mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-23 14:03:07 +01:00
Always zero blr/message memory before usage.
Otherwise a reused message may cause garbage to be copied to XDR which in turn may cause asynchronous exceptions in the asymmetric protocol code.
This commit is contained in:
parent
2dbb9242c3
commit
8d6e675b75
@ -355,10 +355,10 @@ ISC_STATUS UTLD_parse_sqlda(
|
|||||||
// FREE: unknown
|
// FREE: unknown
|
||||||
if (!pClause->dasup_blr) // NOMEM:
|
if (!pClause->dasup_blr) // NOMEM:
|
||||||
return error_dsql_804(status, isc_virmemexh);
|
return error_dsql_804(status, isc_virmemexh);
|
||||||
memset(pClause->dasup_blr, 0, blr_len);
|
|
||||||
pClause->dasup_blr_buf_len = blr_len;
|
pClause->dasup_blr_buf_len = blr_len;
|
||||||
pClause->dasup_blr_length = 0;
|
pClause->dasup_blr_length = 0;
|
||||||
}
|
}
|
||||||
|
memset(pClause->dasup_blr, 0, blr_len);
|
||||||
|
|
||||||
bool same_flag = (blr_len == pClause->dasup_blr_length);
|
bool same_flag = (blr_len == pClause->dasup_blr_length);
|
||||||
|
|
||||||
@ -392,7 +392,7 @@ ISC_STATUS UTLD_parse_sqlda(
|
|||||||
// *(p)++ = (blr_version4);
|
// *(p)++ = (blr_version4);
|
||||||
// same_flag = false;
|
// same_flag = false;
|
||||||
//}
|
//}
|
||||||
|
|
||||||
ch_stuff(p, blr_begin, same_flag);
|
ch_stuff(p, blr_begin, same_flag);
|
||||||
ch_stuff(p, blr_message, same_flag);
|
ch_stuff(p, blr_message, same_flag);
|
||||||
ch_stuff(p, 0, same_flag);
|
ch_stuff(p, 0, same_flag);
|
||||||
@ -512,9 +512,9 @@ ISC_STATUS UTLD_parse_sqlda(
|
|||||||
// FREE: unknown
|
// FREE: unknown
|
||||||
if (!pClause->dasup_msg) // NOMEM:
|
if (!pClause->dasup_msg) // NOMEM:
|
||||||
return error_dsql_804(status, isc_virmemexh);
|
return error_dsql_804(status, isc_virmemexh);
|
||||||
memset(pClause->dasup_msg, 0, msg_len);
|
|
||||||
pClause->dasup_msg_buf_len = msg_len;
|
pClause->dasup_msg_buf_len = msg_len;
|
||||||
}
|
}
|
||||||
|
memset(pClause->dasup_msg, 0, msg_len);
|
||||||
|
|
||||||
// Fill in the return values to the caller.
|
// Fill in the return values to the caller.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user