Message ID | 1355486281-23143-2-git-send-email-pontus.fuchs@gmail.com |
---|---|
State | Accepted |
Commit | 5bbf590a583609541cb257a6bc01bdcfc211bd3c |
Headers | show |
On Fri, Dec 14, 2012 at 12:58:01PM +0100, Pontus Fuchs wrote: > Same fix as d49ea68284fdb8516d7e0903e526aac484c18c49 in > wpa_supplicant. Thanks, applied.
On Mon, 2012-12-17 at 16:32 +0200, Jouni Malinen wrote: > On Fri, Dec 14, 2012 at 12:58:01PM +0100, Pontus Fuchs wrote: > > Same fix as d49ea68284fdb8516d7e0903e526aac484c18c49 in > > wpa_supplicant. > > Thanks, applied. Isn't this a bug in the Android initscripts and shouldn't it be fixed there instead of in hacks in the supplicant code? Or are you trying to ensure the supplicant will keep running well on older Android releases? Dan
On Mon, Dec 17, 2012 at 10:13:24AM -0600, Dan Williams wrote: > On Mon, 2012-12-17 at 16:32 +0200, Jouni Malinen wrote: > > On Fri, Dec 14, 2012 at 12:58:01PM +0100, Pontus Fuchs wrote: > > > Same fix as d49ea68284fdb8516d7e0903e526aac484c18c49 in > > > wpa_supplicant. > > > > Thanks, applied. > > Isn't this a bug in the Android initscripts and shouldn't it be fixed > there instead of in hacks in the supplicant code? Or are you trying to > ensure the supplicant will keep running well on older Android releases? Well, yes, modifying the initscripts (or something else; I'm not completely sure where umask is set) would likely be the cleanest way of doing this. That said, it is not exactly convenient to get all the possible places modified, so I ended up giving up with the cleanest fix from hostap.git view point and pushed this into wpa_supplicant (and now into hostapd with this commit). And yes, this needs to work also with existing Android releases.
diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c index 1d4fe0d..bd16b17 100644 --- a/hostapd/ctrl_iface.c +++ b/hostapd/ctrl_iface.c @@ -1003,6 +1003,21 @@ int hostapd_ctrl_iface_init(struct hostapd_data *hapd) return -1; } +#ifdef ANDROID + /* + * Android is 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(hapd->conf->ctrl_interface, S_IRWXU | S_IRWXG) < 0) { + wpa_printf(MSG_ERROR, "CTRL: Could not chmod directory: %s", + strerror(errno)); + /* Try to continue anyway */ + } +#endif /* ANDROID */ + if (os_strlen(hapd->conf->ctrl_interface) + 1 + os_strlen(hapd->conf->iface) >= sizeof(addr.sun_path)) goto fail;