diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2014-08-31 20:14:48 +1000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2014-08-31 20:14:48 +1000 |
commit | 0e68abcd4f0e2d015538e6fce2519c9513fb90ec (patch) | |
tree | ac8a76ecb9bd9439073430213bfdfc3cbdd3dabf /Demos/Device/ClassDriver/RNDISEthernet | |
parent | 2db71bc8a48a042d49a63b27723d9bcb27a35542 (diff) | |
download | lufa-0e68abcd4f0e2d015538e6fce2519c9513fb90ec.tar.gz lufa-0e68abcd4f0e2d015538e6fce2519c9513fb90ec.tar.bz2 lufa-0e68abcd4f0e2d015538e6fce2519c9513fb90ec.zip |
Fix overflow for RNDIS class driver responses when returning the adapter query list (thanks to Peter Mc Shane).
Diffstat (limited to 'Demos/Device/ClassDriver/RNDISEthernet')
-rw-r--r-- | Demos/Device/ClassDriver/RNDISEthernet/Lib/DHCP.c | 4 | ||||
-rw-r--r-- | Demos/Device/ClassDriver/RNDISEthernet/Lib/Webserver.h | 2 | ||||
-rw-r--r-- | Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.c | 16 |
3 files changed, 14 insertions, 8 deletions
diff --git a/Demos/Device/ClassDriver/RNDISEthernet/Lib/DHCP.c b/Demos/Device/ClassDriver/RNDISEthernet/Lib/DHCP.c index a72a6ce3f..b3b5d6943 100644 --- a/Demos/Device/ClassDriver/RNDISEthernet/Lib/DHCP.c +++ b/Demos/Device/ClassDriver/RNDISEthernet/Lib/DHCP.c @@ -54,8 +54,8 @@ int16_t DHCP_ProcessDHCPPacket(void* IPHeaderInStart, DHCP_Header_t* DHCPHeaderIN = (DHCP_Header_t*)DHCPHeaderInStart; DHCP_Header_t* DHCPHeaderOUT = (DHCP_Header_t*)DHCPHeaderOutStart; - uint8_t* DHCPOptionsINStart = (uint8_t*)(DHCPHeaderInStart + sizeof(DHCP_Header_t)); - uint8_t* DHCPOptionsOUTStart = (uint8_t*)(DHCPHeaderOutStart + sizeof(DHCP_Header_t)); + uint8_t* DHCPOptionsINStart = ((uint8_t*)DHCPHeaderInStart + sizeof(DHCP_Header_t)); + uint8_t* DHCPOptionsOUTStart = ((uint8_t*)DHCPHeaderOutStart + sizeof(DHCP_Header_t)); DecodeDHCPHeader(DHCPHeaderInStart); diff --git a/Demos/Device/ClassDriver/RNDISEthernet/Lib/Webserver.h b/Demos/Device/ClassDriver/RNDISEthernet/Lib/Webserver.h index 8307d46da..142dc7a03 100644 --- a/Demos/Device/ClassDriver/RNDISEthernet/Lib/Webserver.h +++ b/Demos/Device/ClassDriver/RNDISEthernet/Lib/Webserver.h @@ -46,7 +46,7 @@ /* Macros: */ /** Maximum size of a HTTP response per transmission */ - #define HTTP_REPLY_BLOCK_SIZE 128 + #define HTTP_REPLY_BLOCK_SIZE 128 /* Function Prototypes: */ void Webserver_Init(void); diff --git a/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.c b/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.c index 95d93549e..bdb506117 100644 --- a/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.c +++ b/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.c @@ -36,6 +36,15 @@ #include "RNDISEthernet.h" +/** Message buffer for RNDIS messages processed by the RNDIS device class driver. */ +static uint8_t RNDIS_Message_Buffer[192]; + +/** Global to store the incoming frame from the host before it is processed by the device. */ +static Ethernet_Frame_Info_t FrameIN; + +/** Global to store the outgoing frame created in the device before it is sent to the host. */ +static Ethernet_Frame_Info_t FrameOUT; + /** LUFA RNDIS Class driver interface configuration and state information. This structure is * passed to all RNDIS Class driver functions, so that multiple instances of the same class * within a device can be differentiated from one another. @@ -65,14 +74,11 @@ USB_ClassInfo_RNDIS_Device_t Ethernet_RNDIS_Interface = }, .AdapterVendorDescription = "LUFA RNDIS Demo Adapter", .AdapterMACAddress = {ADAPTER_MAC_ADDRESS}, + .MessageBuffer = RNDIS_Message_Buffer, + .MessageBufferLength = sizeof(RNDIS_Message_Buffer), }, }; -/** Global to store the incoming frame from the host before it is processed by the device. */ -static Ethernet_Frame_Info_t FrameIN; - -/** Global to store the outgoing frame created in the device before it is sent to the host. */ -static Ethernet_Frame_Info_t FrameOUT; /** Main program entry point. This routine contains the overall program flow, including initial * setup of all components and the main program loop. |