diff options
author | Kanchanapally, Vidyullatha <vkanchan@qti.qualcomm.com> | 2016-03-01 02:06:53 (GMT) |
---|---|---|
committer | Jouni Malinen <j@w1.fi> | 2016-03-03 12:50:29 (GMT) |
commit | 61697c7ecc0095d65218bc3f8203cabf370b2f27 (patch) | |
tree | 90c997ead681dbe318b6a4904b0fb078f181b423 /hs20 | |
parent | 0147afa9dfb03ee9f97101dc29bee178990d52a2 (diff) | |
download | hostap-61697c7ecc0095d65218bc3f8203cabf370b2f27.zip hostap-61697c7ecc0095d65218bc3f8203cabf370b2f27.tar.gz hostap-61697c7ecc0095d65218bc3f8203cabf370b2f27.tar.bz2 |
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>
Diffstat (limited to 'hs20')
-rw-r--r-- | hs20/client/osu_client.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/hs20/client/osu_client.c b/hs20/client/osu_client.c index 35793c8..2907c64 100644 --- a/hs20/client/osu_client.c +++ b/hs20/client/osu_client.c @@ -2339,12 +2339,23 @@ static int cmd_signup(struct hs20_osu_client *ctx, int no_prod_assoc, return -1; 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", fname, strerror(errno)); 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); if (wpa_command(ifname, buf) < 0) { wpa_printf(MSG_INFO, "Failed to configure osu_dir to wpa_supplicant"); |