34 lines
1.1 KiB
Diff
34 lines
1.1 KiB
Diff
--- a/src/common/wpa_ctrl.c
|
|
+++ b/src/common/wpa_ctrl.c
|
|
@@ -135,7 +135,7 @@ try_again:
|
|
return NULL;
|
|
}
|
|
tries++;
|
|
-#ifdef ANDROID
|
|
+
|
|
/* Set client socket file permissions so that bind() creates the client
|
|
* socket with these permissions and there is no need to try to change
|
|
* them with chmod() after bind() which would have potential issues with
|
|
@@ -147,7 +147,7 @@ try_again:
|
|
* operations to allow the response to go through. Those are using the
|
|
* no-deference-symlinks version to avoid races. */
|
|
fchmod(ctrl->s, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
|
|
-#endif /* ANDROID */
|
|
+
|
|
if (bind(ctrl->s, (struct sockaddr *) &ctrl->local,
|
|
sizeof(ctrl->local)) < 0) {
|
|
if (errno == EADDRINUSE && tries < 2) {
|
|
@@ -165,7 +165,11 @@ try_again:
|
|
return NULL;
|
|
}
|
|
|
|
-#ifdef ANDROID
|
|
+#ifndef ANDROID
|
|
+ /* Set group even if we do not have privileges to change owner */
|
|
+ lchown(ctrl->local.sun_path, -1, 101);
|
|
+ lchown(ctrl->local.sun_path, 101, 101);
|
|
+#else
|
|
/* Set group even if we do not have privileges to change owner */
|
|
lchown(ctrl->local.sun_path, -1, AID_WIFI);
|
|
lchown(ctrl->local.sun_path, AID_SYSTEM, AID_WIFI);
|