From c9e817ff478b94b5bae4b853f913cc32d9c94a19 Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Sun, 9 Oct 2011 13:14:53 +0000
Subject: [PATCH] Fixed port state table corruption in the TCP layer of the
 RNDIS Ethernet device demos.

Fix additional warnings under GCC 4.6.
---
 Demos/Device/ClassDriver/RNDISEthernet/Lib/TCP.c      | 6 +++---
 Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.c         | 6 +++---
 Demos/Host/LowLevel/MassStorageHost/MassStorageHost.c | 2 +-
 Demos/Host/LowLevel/MassStorageHost/MassStorageHost.h | 2 +-
 Demos/Host/LowLevel/StillImageHost/StillImageHost.c   | 2 +-
 LUFA/ManPages/ChangeLog.txt                           | 1 +
 6 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/Demos/Device/ClassDriver/RNDISEthernet/Lib/TCP.c b/Demos/Device/ClassDriver/RNDISEthernet/Lib/TCP.c
index a49995ccc..ccaac4cf7 100644
--- a/Demos/Device/ClassDriver/RNDISEthernet/Lib/TCP.c
+++ b/Demos/Device/ClassDriver/RNDISEthernet/Lib/TCP.c
@@ -182,7 +182,7 @@ bool TCP_SetPortState(const uint16_t Port,
 	/* Note, Port number should be specified in BIG endian to simplify network code */
 
 	/* Check to see if the port entry is already in the port state table */
-	for (uint8_t PTableEntry = 0; PTableEntry < MAX_TCP_CONNECTIONS; PTableEntry++)
+	for (uint8_t PTableEntry = 0; PTableEntry < MAX_OPEN_TCP_PORTS; PTableEntry++)
 	{
 		/* Find existing entry for the port in the table, update it if found */
 		if (PortStateTable[PTableEntry].Port == Port)
@@ -196,7 +196,7 @@ bool TCP_SetPortState(const uint16_t Port,
 	/* Check if trying to open the port -- if so we need to find an unused (closed) entry and replace it */
 	if (State == TCP_Port_Open)
 	{
-		for (uint8_t PTableEntry = 0; PTableEntry < MAX_TCP_CONNECTIONS; PTableEntry++)
+		for (uint8_t PTableEntry = 0; PTableEntry < MAX_OPEN_TCP_PORTS; PTableEntry++)
 		{
 			/* Find a closed port entry in the table, change it to the given port and state */
 			if (PortStateTable[PTableEntry].State == TCP_Port_Closed)
@@ -228,7 +228,7 @@ uint8_t TCP_GetPortState(const uint16_t Port)
 {
 	/* Note, Port number should be specified in BIG endian to simplify network code */
 
-	for (uint8_t PTableEntry = 0; PTableEntry < MAX_TCP_CONNECTIONS; PTableEntry++)
+	for (uint8_t PTableEntry = 0; PTableEntry < MAX_OPEN_TCP_PORTS; PTableEntry++)
 	{
 		/* Find existing entry for the port in the table, return the port status if found */
 		if (PortStateTable[PTableEntry].Port == Port)
diff --git a/Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.c b/Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.c
index c8a12da7c..e9431f950 100644
--- a/Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.c
+++ b/Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.c
@@ -181,7 +181,7 @@ bool TCP_SetPortState(const uint16_t Port,
 	/* Note, Port number should be specified in BIG endian to simplify network code */
 
 	/* Check to see if the port entry is already in the port state table */
-	for (uint8_t PTableEntry = 0; PTableEntry < MAX_TCP_CONNECTIONS; PTableEntry++)
+	for (uint8_t PTableEntry = 0; PTableEntry < MAX_OPEN_TCP_PORTS; PTableEntry++)
 	{
 		/* Find existing entry for the port in the table, update it if found */
 		if (PortStateTable[PTableEntry].Port == Port)
@@ -195,7 +195,7 @@ bool TCP_SetPortState(const uint16_t Port,
 	/* Check if trying to open the port -- if so we need to find an unused (closed) entry and replace it */
 	if (State == TCP_Port_Open)
 	{
-		for (uint8_t PTableEntry = 0; PTableEntry < MAX_TCP_CONNECTIONS; PTableEntry++)
+		for (uint8_t PTableEntry = 0; PTableEntry < MAX_OPEN_TCP_PORTS; PTableEntry++)
 		{
 			/* Find a closed port entry in the table, change it to the given port and state */
 			if (PortStateTable[PTableEntry].State == TCP_Port_Closed)
@@ -227,7 +227,7 @@ uint8_t TCP_GetPortState(const uint16_t Port)
 {
 	/* Note, Port number should be specified in BIG endian to simplify network code */
 
-	for (uint8_t PTableEntry = 0; PTableEntry < MAX_TCP_CONNECTIONS; PTableEntry++)
+	for (uint8_t PTableEntry = 0; PTableEntry < MAX_OPEN_TCP_PORTS; PTableEntry++)
 	{
 		/* Find existing entry for the port in the table, return the port status if found */
 		if (PortStateTable[PTableEntry].Port == Port)
diff --git a/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.c b/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.c
index a1d39cbb3..d20663104 100644
--- a/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.c
+++ b/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.c
@@ -348,7 +348,7 @@ void MassStorageHost_Task(void)
  *  \param[in] CommandString  ASCII string located in PROGMEM space indicating what operation failed
  *  \param[in] ErrorCode      Error code of the function which failed to complete successfully
  */
-void ShowDiskReadError(char* CommandString,
+void ShowDiskReadError(const char* CommandString,
                        const uint8_t ErrorCode)
 {
 	if (ErrorCode == MASS_STORE_SCSI_COMMAND_FAILED)
diff --git a/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.h b/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.h
index 0aec46fd0..3f4ae07ed 100644
--- a/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.h
+++ b/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.h
@@ -84,7 +84,7 @@
 		                                            const uint8_t SubErrorCode);
 		void EVENT_USB_Host_DeviceEnumerationComplete(void);
 
-		void ShowDiskReadError(char* CommandString,
+		void ShowDiskReadError(const char* CommandString,
 		                       const uint8_t ErrorCode);
 
 #endif
diff --git a/Demos/Host/LowLevel/StillImageHost/StillImageHost.c b/Demos/Host/LowLevel/StillImageHost/StillImageHost.c
index d2eecb403..51f62016d 100644
--- a/Demos/Host/LowLevel/StillImageHost/StillImageHost.c
+++ b/Demos/Host/LowLevel/StillImageHost/StillImageHost.c
@@ -353,7 +353,7 @@ void UnicodeToASCII(uint8_t* UnicodeString,
 void ShowCommandError(uint8_t ErrorCode,
                       bool ResponseCodeError)
 {
-	char* FailureType = ((ResponseCodeError) ? PSTR("Response Code != OK") : PSTR("Transaction Fail"));
+	const char* FailureType = ((ResponseCodeError) ? PSTR("Response Code != OK") : PSTR("Transaction Fail"));
 
 	printf_P(PSTR(ESC_FG_RED "Command Error (%S).\r\n"
 	                         " -- Error Code %d\r\n" ESC_FG_WHITE), FailureType, ErrorCode);
diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index c07f10a90..e8a7b9ebc 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -94,6 +94,7 @@
   *   - Fixed incorrect Dataflash buffer use in the DataflashManager_WriteBlocks_RAM() function of several demos/projects (thanks to Jeremy Willden)
   *   - Fixed incorrect logging interval (always 500ms longer than requested) in the TempDataLogger project
   *   - Fixed incorrect buffer size check in the USBtoSerial project (thanks to Yuri A Nikiforov)
+  *   - Fixed port state table corruption in the TCP layer of the RNDIS Ethernet device demos
   *
   *  \section Sec_ChangeLog110528 Version 110528
   *  <b>New:</b>
-- 
GitLab