Messages in this thread Patch in this message | | | Date | Sun, 13 Dec 2009 12:42:07 +0100 (CET) | From | Julia Lawall <> | Subject | [PATCH 5/9] drivers/net/wireless: Correct code taking the size of a pointer |
| |
From: Julia Lawall <julia@diku.dk>
sizeof(iv16) and sizeof(iv32) are the sizes of pointers. Change them to the size of the copied data.
A simplified version of the semantic patch that finds this problem is as follows: (http://coccinelle.lip6.fr/)
// <smpl> @@ expression *x; expression f; type T; @@
*f(...,(T)x,...) // </smpl>
Signed-off-by: Julia Lawall <julia@diku.dk>
--- drivers/net/wireless/rt2x00/rt2800lib.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c index eb1e1d0..1e74732 100644 --- a/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c @@ -2140,8 +2140,8 @@ static void rt2800_get_tkip_seq(struct ieee80211_hw *hw, u8 hw_key_idx, rt2800_register_multiread(rt2x00dev, offset, &iveiv_entry, sizeof(iveiv_entry)); - memcpy(&iveiv_entry.iv[0], iv16, sizeof(iv16)); - memcpy(&iveiv_entry.iv[4], iv32, sizeof(iv32)); + memcpy(&iveiv_entry.iv[0], iv16, sizeof(*iv16)); + memcpy(&iveiv_entry.iv[4], iv32, sizeof(*iv32)); } static int rt2800_set_rts_threshold(struct ieee80211_hw *hw, u32 value)
| |