diff options
Diffstat (limited to 'source4/librpc/rpc/dcerpc.c')
-rw-r--r-- | source4/librpc/rpc/dcerpc.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/source4/librpc/rpc/dcerpc.c b/source4/librpc/rpc/dcerpc.c index b485864c7b..220b061f3c 100644 --- a/source4/librpc/rpc/dcerpc.c +++ b/source4/librpc/rpc/dcerpc.c @@ -550,11 +550,16 @@ static void dcerpc_recv_data(struct dcerpc_connection *conn, DATA_BLOB *blob, NT { struct ncacn_packet pkt; + if (NT_STATUS_IS_OK(status) && blob->length == 0) { + status = NT_STATUS_UNEXPECTED_NETWORK_ERROR; + } + /* the transport may be telling us of a severe error, such as a dropped socket */ if (!NT_STATUS_IS_OK(status)) { data_blob_free(blob); dcerpc_connection_dead(conn, status); + return; } /* parse the basic packet to work out what type of response this is */ |