<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Sep 26, 2013 at 3:19 PM, Jouni Malinen <span dir="ltr">&lt;<a href="mailto:j@w1.fi" target="_blank">j@w1.fi</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
On Thu, Sep 26, 2013 at 02:45:55PM -0400, Matt Causey wrote:<br>
&gt; &gt;&gt; sudo gdb wpa_supplicant<br>
<div class="im">&gt; &gt;&gt; Program received signal SIGSEGV, Segmentation fault.<br>
&gt; &gt;&gt; [Switching to Thread 0xb73dc6c0 (LWP 16180)]<br>
&gt; &gt;&gt; wpa_bss_get_vendor_ie (bss=0x87c0a40, vendor_type=5304833) at bss.c:912<br>
<br>
</div><div class="im">&gt; Referencing wpa_supplicant-2.0, which we&#39;re using unmodified, here&#39;s the<br>
&gt; function:<br>
<br>
</div><div class="im">&gt; const u8 * wpa_bss_get_vendor_ie(const struct wpa_bss *bss, u32 vendor_type)<br>
&gt; {<br>
&gt;     const u8 *end, *pos;<br>
&gt;<br>
&gt;     pos = (const u8 *) (bss + 1);<br>
&gt;     end = pos + bss-&gt;ie_len;<br>
&gt;<br>
&gt;     while (pos + 1 &lt; end) {<br>
&gt;         if (pos + 2 + pos[1] &gt; end)   &lt;--------  **LINE 912**<br>
&gt;             break;<br>
<br>
</div>Interesting.. I cannot find an issue here, so I&#39;d assume the BSS entry<br>
got somehow corrupted and this just happens to be the first place where<br>
that corruption trigger a clearly visible error.<br></blockquote><div><br></div><div>For us it does appear to be related to beacon / BSSID load, which might lend some evidence to the idea of corruption.  The issues get worse (more segfaults) when we either turn up more access points or increase power levels.<br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Would you be able to run wpa_supplicant under valgrind (sudo valgrind<br>
./wpa_supplicant ...)? It could make it easier to find where the<br>
corruption really happens for the first time.<br></blockquote><div><br></div><div>I&#39;ll do this and make another post.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<br>
It could also be useful to print bss-&gt;ie_len in that<br>
wpa_bss_get_vendor_ie() function.<br></blockquote><div><br></div><div>Here&#39;s that bit of data from my current backtrace:<br><br>(gdb) print bss<br>$1 = (const struct wpa_bss *) 0x8ada590<br>(gdb) print pos<br>$2 = (const u8 *) 0x8ae6fff &quot;&quot;<br>
(gdb) print end<br>$3 = (const u8 *) 0x8b38315 &lt;Address 0x8b38315 out of bounds&gt;<br>(gdb) print bss-&gt;ie_len<br>$6 = 384261<br><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<br>
Alternatively or in addition to that, I&#39;d be interested in seeing a full<br>
wpa_supplicant debug log from start to the segfault point with as much<br>
verbosity as possible (i.e., -ddd on command line). This will be large,<br>
but it will include all the IE buffers from scan results, so it should<br>
give pretty clear sign if something is really going wrong in parsing the<br>
information. If you can send this, feel free to just email it directly<br>
to me (compressed version preferred taken into account how large this<br>
is likely to be) since the mailing list is not going to accept that long<br>
a file.<br></blockquote><div><br></div><div>I&#39;ll resend the one I originally sent this morning.<br><br>Cheers,<br><br>--<br></div><div>Matt<br><br></div></div></div></div>