aboutsummaryrefslogtreecommitdiffstats
path: root/hs20
diff options
context:
space:
mode:
authorKanchanapally, Vidyullatha <vkanchan@qti.qualcomm.com>2016-03-01 02:06:53 (GMT)
committerJouni Malinen <j@w1.fi>2016-03-03 12:50:29 (GMT)
commit61697c7ecc0095d65218bc3f8203cabf370b2f27 (patch)
tree90c997ead681dbe318b6a4904b0fb078f181b423 /hs20
parent0147afa9dfb03ee9f97101dc29bee178990d52a2 (diff)
downloadhostap-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.c13
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");