diff options
-rw-r--r-- | source4/librpc/idl/dcerpc.idl | 1 | ||||
-rw-r--r-- | source4/rpc_server/dcerpc_server.c | 5 |
2 files changed, 6 insertions, 0 deletions
diff --git a/source4/librpc/idl/dcerpc.idl b/source4/librpc/idl/dcerpc.idl index c439262f6c..0ee3d7b69b 100644 --- a/source4/librpc/idl/dcerpc.idl +++ b/source4/librpc/idl/dcerpc.idl @@ -83,6 +83,7 @@ interface dcerpc const int DCERPC_FAULT_OP_RNG_ERROR = 0x1c010002; + const int DCERPC_FAULT_UNK_IF = 0x1c010003; const int DCERPC_FAULT_NDR = 0x000006f7; const int DCERPC_FAULT_INVALID_TAG = 0x1c000006; const int DCERPC_FAULT_CONTEXT_MISMATCH = 0x1c00001a; diff --git a/source4/rpc_server/dcerpc_server.c b/source4/rpc_server/dcerpc_server.c index 22a6e1e625..b89bec40bb 100644 --- a/source4/rpc_server/dcerpc_server.c +++ b/source4/rpc_server/dcerpc_server.c @@ -560,6 +560,11 @@ static NTSTATUS dcesrv_request(struct dcesrv_call_state *call) DATA_BLOB stub; uint32 total_length; + + if (!call->conn->iface) { + return dcesrv_fault(call, DCERPC_FAULT_UNK_IF); + } + opnum = call->pkt.u.request.opnum; if (opnum >= call->conn->iface->ndr->num_calls) { |