avahi: Fix non-root user issue in avahi-autoipd

This commit is contained in:
Tee KOBAYASHI 2021-12-02 18:11:18 +09:00 committed by Henrik Grimler
parent c4db48e780
commit 84126f7f6f
1 changed files with 55 additions and 0 deletions

View File

@ -0,0 +1,55 @@
--- a/avahi-autoipd/main.c
+++ b/avahi-autoipd/main.c
@@ -934,6 +934,7 @@
/* Get user/group ID */
+#ifndef __ANDROID__
if (!no_drop_root) {
if (!(pw = getpwnam(AVAHI_AUTOIPD_USER))) {
@@ -948,6 +949,7 @@
daemon_log(LOG_INFO, "Found user '"AVAHI_AUTOIPD_USER"' (UID %lu) and group '"AVAHI_AUTOIPD_GROUP"' (GID %lu).", (unsigned long) pw->pw_uid, (unsigned long) gr->gr_gid);
}
+#endif
/* Create directory */
u = umask(0000);
@@ -964,14 +966,20 @@
if (!no_drop_root) {
struct stat st;
+#ifndef __ANDROID__
chown(AVAHI_IPDATA_DIR, pw->pw_uid, gr->gr_gid);
+#endif
if (stat(AVAHI_IPDATA_DIR, &st) < 0) {
daemon_log(LOG_ERR, "stat(): %s\n", strerror(errno));
return -1;
}
+#ifndef __ANDROID__
if (!S_ISDIR(st.st_mode) || st.st_uid != pw->pw_uid || st.st_gid != gr->gr_gid) {
+#else
+ if (!S_ISDIR(st.st_mode)) {
+#endif
daemon_log(LOG_ERR, "Failed to create runtime directory "AVAHI_IPDATA_DIR".");
return -1;
}
@@ -995,6 +1003,7 @@
#endif
+#ifndef __ANDROID__
if (!no_drop_root) {
if (initgroups(AVAHI_AUTOIPD_USER, gr->gr_gid) != 0) {
@@ -1040,6 +1049,7 @@
daemon_log(LOG_INFO, "Successfully dropped root privileges.");
}
+#endif /* __ANDROID__ */
return 0;
}