Android: Allow wpa_supplicant to write files to osu-info dir

This commit allows any process running with group id of AID_WIFI to
read/write files to osu-info directory. Also, it allows other users to
read and search the osu-info directory.

This fixes issues with hs20-osu-client creating a directory for
wpa_supplicant use without wpa_supplicant actually having privileges to
write there on Android where the wpa_supplicant process does not run as
root.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Kanchanapally, Vidyullatha 2016-03-01 07:36:53 +05:30 committed by Jouni Malinen
parent 0147afa9df
commit 61697c7ecc

View File

@ -2339,12 +2339,23 @@ static int cmd_signup(struct hs20_osu_client *ctx, int no_prod_assoc,
return -1; return -1;
snprintf(fname, sizeof(fname), "%s/osu-info", dir); snprintf(fname, sizeof(fname), "%s/osu-info", dir);
if (mkdir(fname, S_IRWXU | S_IRWXG) < 0 && errno != EEXIST) { if (mkdir(fname, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) < 0 &&
errno != EEXIST) {
wpa_printf(MSG_INFO, "mkdir(%s) failed: %s", wpa_printf(MSG_INFO, "mkdir(%s) failed: %s",
fname, strerror(errno)); fname, strerror(errno));
return -1; return -1;
} }
#ifdef ANDROID
/* Allow processes running with Group ID as AID_WIFI
* to read/write files from osu-info directory
*/
if (chown(fname, -1, AID_WIFI)) {
wpa_printf(MSG_INFO, "Could not chown osu-info directory: %s",
strerror(errno));
}
#endif /* ANDROID */
snprintf(buf, sizeof(buf), "SET osu_dir %s", fname); snprintf(buf, sizeof(buf), "SET osu_dir %s", fname);
if (wpa_command(ifname, buf) < 0) { if (wpa_command(ifname, buf) < 0) {
wpa_printf(MSG_INFO, "Failed to configure osu_dir to wpa_supplicant"); wpa_printf(MSG_INFO, "Failed to configure osu_dir to wpa_supplicant");