diff options
Diffstat (limited to 'source3/rpc_server/srv_pipe.c')
-rw-r--r-- | source3/rpc_server/srv_pipe.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/source3/rpc_server/srv_pipe.c b/source3/rpc_server/srv_pipe.c index 29e5b8af8e..f58eba49f8 100644 --- a/source3/rpc_server/srv_pipe.c +++ b/source3/rpc_server/srv_pipe.c @@ -1432,6 +1432,7 @@ static bool process_request_pdu(struct pipes_struct *p, struct ncacn_packet *pkt { NTSTATUS status; DATA_BLOB data; + struct dcerpc_sec_vt_header2 hdr2; if (!p->pipe_bound) { DEBUG(0,("process_request_pdu: rpc request with no bind.\n")); @@ -1439,6 +1440,16 @@ static bool process_request_pdu(struct pipes_struct *p, struct ncacn_packet *pkt return False; } + hdr2 = dcerpc_sec_vt_header2_from_ncacn_packet(pkt); + if (pkt->pfc_flags & DCERPC_PFC_FLAG_FIRST) { + p->header2 = hdr2; + } else { + if (!dcerpc_sec_vt_header2_equal(&hdr2, &p->header2)) { + set_incoming_fault(p); + return false; + } + } + /* Store the opnum */ p->opnum = pkt->u.request.opnum; |