1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-26 21:57:41 +03:00

librpc: inline VT CHECK macro logic

The CHECK macro is currently used to dump error and return false on
VT condition check failure. Macros affecting control flow are evil!

Signed-off-by: David Disseldorp <ddiss@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
This commit is contained in:
David Disseldorp 2014-03-24 16:46:09 +01:00 committed by Jeremy Allison
parent ba2db53097
commit 5ccecec3ca

View File

@ -513,14 +513,6 @@ done:
return ret;
}
#define CHECK(msg, ok) \
do { \
if (!ok) { \
DEBUG(10, ("SEC_VT check %s failed\n", msg)); \
return false; \
} \
} while(0)
#define CHECK_SYNTAX(msg, s1, s2) \
do { \
if (!ndr_syntax_id_equal(&s1, &s2)) { \
@ -538,14 +530,20 @@ static bool dcerpc_sec_vt_bitmask_check(const uint32_t *bitmask1,
struct dcerpc_sec_vt *c)
{
if (bitmask1 == NULL) {
CHECK("Bitmask1 must_process_command",
!(c->command & DCERPC_SEC_VT_MUST_PROCESS));
if (c->command & DCERPC_SEC_VT_MUST_PROCESS) {
DEBUG(10, ("SEC_VT check Bitmask1 must_process_command "
"failed\n"));
return false;
}
return true;
}
if (c->u.bitmask1 & DCERPC_SEC_VT_CLIENT_SUPPORTS_HEADER_SIGNING) {
CHECK("Bitmask1 client_header_signing",
*bitmask1 & DCERPC_SEC_VT_CLIENT_SUPPORTS_HEADER_SIGNING);
if ((c->u.bitmask1 & DCERPC_SEC_VT_CLIENT_SUPPORTS_HEADER_SIGNING)
&& (!(*bitmask1 & DCERPC_SEC_VT_CLIENT_SUPPORTS_HEADER_SIGNING))) {
DEBUG(10, ("SEC_VT check Bitmask1 client_header_signing "
"failed\n"));
return false;
}
return true;
}
@ -554,8 +552,12 @@ static bool dcerpc_sec_vt_pctx_check(const struct dcerpc_sec_vt_pcontext *pconte
struct dcerpc_sec_vt *c)
{
if (pcontext == NULL) {
CHECK("Pcontext must_process_command",
!(c->command & DCERPC_SEC_VT_MUST_PROCESS));
if (c->command & DCERPC_SEC_VT_MUST_PROCESS) {
DEBUG(10, ("SEC_VT check Pcontext must_process_command "
"failed\n"));
return false;
}
return true;
}
@ -572,12 +574,19 @@ static bool dcerpc_sec_vt_hdr2_check(const struct dcerpc_sec_vt_header2 *header2
struct dcerpc_sec_vt *c)
{
if (header2 == NULL) {
CHECK("Header2 must_process_command",
!(c->command & DCERPC_SEC_VT_MUST_PROCESS));
if (c->command & DCERPC_SEC_VT_MUST_PROCESS) {
DEBUG(10, ("SEC_VT check Header2 must_process_command failed\n"));
return false;
}
return true;
}
CHECK("Header2", dcerpc_sec_vt_header2_equal(header2, &c->u.header2));
if (!dcerpc_sec_vt_header2_equal(header2, &c->u.header2)) {
DEBUG(10, ("SEC_VT check Header2 failed\n"));
return false;
}
return true;
}
@ -621,8 +630,11 @@ bool dcerpc_sec_verification_trailer_check(
}
default:
CHECK("Unknown must_process_command",
!(c->command & DCERPC_SEC_VT_MUST_PROCESS));
if (c->command & DCERPC_SEC_VT_MUST_PROCESS) {
DEBUG(10, ("SEC_VT check Unknown must_process_command failed\n"));
return false;
}
break;
}
}