Module: wine Branch: master Commit: 69eeb8b1b7142a553d2b4dbf79cd8fde413bcb99 URL: http://source.winehq.org/git/wine.git/?a=commit;h=69eeb8b1b7142a553d2b4dbf79...
Author: Rob Shearman rob@codeweavers.com Date: Thu Jul 5 12:56:35 2007 +0100
rpcrt4: Return a fault packet if the proc num exceeds the index of the last function available for the interface.
---
dlls/rpcrt4/rpc_server.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/rpcrt4/rpc_server.c b/dlls/rpcrt4/rpc_server.c index 4b9a93d..328c0d0 100644 --- a/dlls/rpcrt4/rpc_server.c +++ b/dlls/rpcrt4/rpc_server.c @@ -260,8 +260,12 @@ static void RPCRT4_process_packet(RpcConnection* conn, RpcPktHdr* hdr, RPC_MESSA func = *sif->If->DispatchTable->DispatchTable; } else { if (msg->ProcNum >= sif->If->DispatchTable->DispatchTableCount) { - ERR("invalid procnum\n"); - func = NULL; + WARN("invalid procnum (%d/%d)\n", msg->ProcNum, sif->If->DispatchTable->DispatchTableCount); + response = RPCRT4_BuildFaultHeader(NDR_LOCAL_DATA_REPRESENTATION, + NCA_S_OP_RNG_ERROR); + + RPCRT4_Send(conn, response, NULL, 0); + RPCRT4_FreeHeader(response); } func = sif->If->DispatchTable->DispatchTable[msg->ProcNum]; }