Android: Force group access to ctrl_iface directory
wpa_supplicant is started from /init.*.rc on Android and that seems to be using umask 0077 which would leave the control interface directory without group access. This breaks things since Wi-Fi framework assumes that this directory can be accessed by other applications in the wifi group. Fix this by adding group access even if umask value would prevent this. In most cases, this issue was not hit since the control interface directory is normally created by that same init.*.rc file with suitable mode and wpa_supplicant is killed in the way that does not allow it to remove the file. However, if wpa_supplicant is allowed stop cleanly, it will remove the directory and the next start could result with the Wi-Fi framework not being able to use Wi-Fi (and GUI not showing Wi-Fi getting enabled). Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
ffa45a1343
commit
d49ea68284
1 changed files with 16 additions and 0 deletions
|
@ -305,6 +305,22 @@ wpa_supplicant_ctrl_iface_init(struct wpa_supplicant *wpa_s)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef ANDROID
|
||||
/*
|
||||
* wpa_supplicant is started from /init.*.rc on Android and that seems
|
||||
* to be using umask 0077 which would leave the control interface
|
||||
* directory without group access. This breaks things since Wi-Fi
|
||||
* framework assumes that this directory can be accessed by other
|
||||
* applications in the wifi group. Fix this by adding group access even
|
||||
* if umask value would prevent this.
|
||||
*/
|
||||
if (chmod(dir, S_IRWXU | S_IRWXG) < 0) {
|
||||
wpa_printf(MSG_ERROR, "CTRL: Could not chmod directory: %s",
|
||||
strerror(errno));
|
||||
/* Try to continue anyway */
|
||||
}
|
||||
#endif /* ANDROID */
|
||||
|
||||
if (gid_str) {
|
||||
grp = getgrnam(gid_str);
|
||||
if (grp) {
|
||||
|
|
Loading…
Reference in a new issue