[PATCH] Fix potential bugs of wpa_ctrl_request
Johannes Berg
johannes at sipsolutions.net
Fri Jul 23 04:02:58 PDT 2021
On Fri, 2021-07-23 at 06:01 -0400, Alan DeKok wrote:
> On Jul 23, 2021, at 5:41 AM, xinpeng wang <wangxinpeng at uniontech.com> wrote:
> >
> > wpa_ctrl_request will block for up to 10 seconds while waiting for the reply,
> > but when this function call select is interrupted, re-assign the timeout parameter to 10s,
> > which will cause the time to exceed 10s;
> > if it is interrupted all the time, this function may block for a very long time
>
> This patch helps on Linux, it is likely to not work on other systems.
>
> Setting the time outside of the loop is good, but that relies on select() updating the value of &tv when it returns. IIRC, only Linux does that. Other operating systems don't touch "tv", which means it's value is left at 10.
>
> I've attached my own attempt at a patch. It calculates the end time, and then updates "tv" on every iteration of the loop.
Looks good to me. Technically, you could also move the "started_at"
variable into the loop together with "diff", you only need "ending_at"
to be outside.
johannes
More information about the Hostap
mailing list