From d65a5407b5e47770d7242bb559c5cd6bd09d15d5 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Mon, 26 Oct 2009 12:09:05 +0000 Subject: [PATCH] [KDCOM] - take the MessageHeader length from MaximumLength field instead of depending on the packet type - Context -> KdContext - remove redundant return svn path=/branches/ros-amd64-bringup/; revision=43776 --- reactos/drivers/base/kddll/kddll.c | 36 +++++++----------------------- 1 file changed, 8 insertions(+), 28 deletions(-) diff --git a/reactos/drivers/base/kddll/kddll.c b/reactos/drivers/base/kddll/kddll.c index c8754fef735..5f7dbacb93a 100644 --- a/reactos/drivers/base/kddll/kddll.c +++ b/reactos/drivers/base/kddll/kddll.c @@ -162,7 +162,7 @@ KdReceivePacket( /* Step 3 - Read ByteCount */ KdStatus = KdpReceiveBuffer(&Packet.ByteCount, sizeof(USHORT)); - if (KdStatus != KDP_PACKET_RECEIVED || Packet.ByteCount > PACKET_MAX_SIZE) + if (KdStatus != KDP_PACKET_RECEIVED) { /* Didn't receive ByteCount or it's too big. Start over. */ continue; @@ -237,29 +237,11 @@ KdReceivePacket( } /* Get size of the message header */ - switch (Packet.PacketType) - { - case PACKET_TYPE_KD_STATE_CHANGE64: - MessageHeader->Length = sizeof(DBGKD_WAIT_STATE_CHANGE64); - break; + MessageHeader->Length = MessageHeader->MaximumLength; - case PACKET_TYPE_KD_STATE_MANIPULATE: - MessageHeader->Length = sizeof(DBGKD_MANIPULATE_STATE64); - break; - - case PACKET_TYPE_KD_DEBUG_IO: - MessageHeader->Length = sizeof(DBGKD_DEBUG_IO); - break; - - default: - KDDBGPRINT("KdReceivePacket - unknown PacketType\n"); - return KDP_PACKET_RESEND; - } - - //KDDBGPRINT("KdReceivePacket - got normal PacketType\n"); - - /* Packet smaller than expected? */ - if (MessageHeader->Length > Packet.ByteCount) + /* Packet smaller than expected or too big? */ + if (Packet.ByteCount < MessageHeader->Length || + Packet.ByteCount > PACKET_MAX_SIZE) { KDDBGPRINT("KdReceivePacket - too few data (%d) for type %d\n", Packet.ByteCount, MessageHeader->Length); @@ -369,7 +351,7 @@ KdSendPacket( IN ULONG PacketType, IN PSTRING MessageHeader, IN PSTRING MessageData, - IN OUT PKD_CONTEXT Context) + IN OUT PKD_CONTEXT KdContext) { KD_PACKET Packet; KDP_STATUS KdStatus; @@ -390,7 +372,7 @@ KdSendPacket( MessageData->Length); } - Retries = Context->KdpDefaultRetries; + Retries = KdContext->KdpDefaultRetries; do { @@ -417,7 +399,7 @@ KdSendPacket( NULL, NULL, 0, - Context); + KdContext); /* Did we succeed? */ if (KdStatus == KDP_PACKET_RECEIVED) @@ -441,7 +423,5 @@ KdSendPacket( /* Packet timed out, send it again */ } while (Retries > 0); - - return; }