All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] staging: rtl8192e: Pass array value to memcpy instead of struct pointer
@ 2021-02-20 18:21 Atul Gopinathan
  2021-02-20 18:21 ` [PATCH 2/2] staging: rtl8192e: Change state information from u16 to u8 Atul Gopinathan
       [not found] ` <674cd5b3-531f-e5a9-b596-f70ccc63d1ad@embeddedor.com>
  0 siblings, 2 replies; 9+ messages in thread
From: Atul Gopinathan @ 2021-02-20 18:21 UTC (permalink / raw)
  To: gregkh; +Cc: gustavo, tiwai, devel, linux-kernel, Atul Gopinathan

The variable "info_element" is of the following type:
struct rtllib_info_element *info_element

rtllib_info_element is a struct containing the following fields as
defined in drivers/staging/rtl8192e/rtllib.h:

struct rtllib_info_element {
        u8 id;
        u8 len;
        u8 data[];
} __packed;

The following code of interest (to which this patch applies) is
supposed to check if the "info_element->len" is greater than 4 and
equal to 6, if this is satisfied then, the last two bytes (the
4th and 5th index of u8 "data" array) are copied into
"network->CcxRmState".

Currently the code uses "memcpy()" with the source as
"&info_element[4]" which would copy in wrong and unintended
information.

This patch rectifies this error by using "&info_element->data[4]" which
rightly copies the last two bytes as the required state information.

Signed-off-by: Atul Gopinathan <atulgopinathan@gmail.com>
---
 drivers/staging/rtl8192e/rtllib_rx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/rtl8192e/rtllib_rx.c b/drivers/staging/rtl8192e/rtllib_rx.c
index 66c135321da4..15bbb63ca130 100644
--- a/drivers/staging/rtl8192e/rtllib_rx.c
+++ b/drivers/staging/rtl8192e/rtllib_rx.c
@@ -1963,15 +1963,15 @@ static void rtllib_parse_mife_generic(struct rtllib_device *ieee,
 
 	if (info_element->len > 4 &&
 	    info_element->data[0] == 0x00 &&
 	    info_element->data[1] == 0x40 &&
 	    info_element->data[2] == 0x96 &&
 	    info_element->data[3] == 0x01) {
 		if (info_element->len == 6) {
-			memcpy(network->CcxRmState, &info_element[4], 2);
+			memcpy(network->CcxRmState, &info_element->data[4], 2);
 			if (network->CcxRmState[0] != 0)
 				network->bCcxRmEnable = true;
 			else
 				network->bCcxRmEnable = false;
 			network->MBssidMask = network->CcxRmState[1] & 0x07;
 			if (network->MBssidMask != 0) {
 				network->bMBssidValid = true;
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2021-03-02 20:21 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-02-20 18:21 [PATCH 1/2] staging: rtl8192e: Pass array value to memcpy instead of struct pointer Atul Gopinathan
2021-02-20 18:21 ` [PATCH 2/2] staging: rtl8192e: Change state information from u16 to u8 Atul Gopinathan
2021-02-21 13:08   ` Greg KH
2021-02-21 16:57     ` Atul Gopinathan
2021-02-22 15:26       ` Greg KH
2021-02-22 17:23         ` Atul Gopinathan
2021-03-02 14:38           ` Greg KH
2021-03-02 16:53             ` Atul Gopinathan
     [not found] ` <674cd5b3-531f-e5a9-b596-f70ccc63d1ad@embeddedor.com>
2021-02-21  5:21   ` [PATCH 1/2] staging: rtl8192e: Pass array value to memcpy instead of struct pointer Atul Gopinathan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.