cfg80211: Use the correct IE buffer pointer
authorMichael Buesch <mb@bu3sch.de>
Sun, 26 Apr 2009 09:27:33 +0000 (11:27 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 6 May 2009 19:14:44 +0000 (15:14 -0400)
If the IE buffer was allocated, the pub.information_elements pointer
was also changed to the allocated space. So we must not assume anymore
that the pointer points at the "found" tail.

So if it was allocated previously, take the codebranch that grows the
buffer size (if necessary) and put the data into the allocated buffer.

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/wireless/scan.c

index 5dd909a4e601c7e5cdb68589532d013c75c74206..10b4887dfa6b89711a2bfe49999f91e0db803185 100644 (file)
@@ -377,7 +377,7 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev,
                        size_t used = dev->wiphy.bss_priv_size + sizeof(*res);
                        size_t ielen = res->pub.len_information_elements;
 
-                       if (ksize(found) >= used + ielen) {
+                       if (!found->ies_allocated && ksize(found) >= used + ielen) {
                                memcpy(found->pub.information_elements,
                                       res->pub.information_elements, ielen);
                                found->pub.len_information_elements = ielen;