From: Imre Vadasz Date: Tue, 6 Jan 2015 14:08:37 +0000 (+0100) Subject: bsd: Fix parsing of ieee80211req_scan_result on FreeBSD and DragonFly X-Git-Tag: hostap_2_4~489 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=28c91ee1242755687c722ef883ad00efc74fae0a;p=thirdparty%2Fhostap.git bsd: Fix parsing of ieee80211req_scan_result on FreeBSD and DragonFly On FreeBSD and DragonFly BSD, we additionally need to skip the isr_meshid_len bytes of the MESH ID, to get the correct address for copying the IE data. The isr_meshid_len field was added in the FreeBSD svn revision r195618 in 2009, so I don't think we need to check the FreeBSD version here. Signed-off-by: Imre Vadász --- diff --git a/src/drivers/driver_bsd.c b/src/drivers/driver_bsd.c index c377970aa..0f1a0f60f 100644 --- a/src/drivers/driver_bsd.c +++ b/src/drivers/driver_bsd.c @@ -1344,7 +1344,12 @@ wpa_driver_bsd_add_scan_entry(struct wpa_scan_results *res, *pos++ = 1; *pos++ = sr->isr_erp; +#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) + os_memcpy(pos, (u8 *)(sr + 1) + sr->isr_ssid_len + sr->isr_meshid_len, + sr->isr_ie_len); +#else os_memcpy(pos, (u8 *)(sr + 1) + sr->isr_ssid_len, sr->isr_ie_len); +#endif pos += sr->isr_ie_len; result->ie_len = pos - (u8 *)(result + 1);