summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/librpc/idl/dcerpc.idl1
-rw-r--r--source4/rpc_server/dcerpc_server.c5
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) {