From 5b5a8ace61e089a207036115b73da8f27f0fba04 Mon Sep 17 00:00:00 2001 From: William Roberts Date: Wed, 6 Apr 2016 20:09:24 -0700 Subject: [PATCH] ueventd: convert to use pwd family of functions Switch ueventd to use the grp.h and pwd.h family of functions for converting strings to uids. This removes the need for using android_filesystem_config.h. Change-Id: I25a6f536bb11683d5cd69a0d7b348d25a272dd3b Bug: 27999086 Signed-off-by: William Roberts --- init/ueventd.cpp | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/init/ueventd.cpp b/init/ueventd.cpp index 249739b1e..73b2136fb 100644 --- a/init/ueventd.cpp +++ b/init/ueventd.cpp @@ -16,14 +16,17 @@ #include #include +#include #include +#include #include #include #include #include +#include + #include -#include #include #include "ueventd.h" @@ -84,15 +87,6 @@ int ueventd_main(int argc, char **argv) return 0; } -static int get_android_id(const char *id) -{ - unsigned int i; - for (i = 0; i < ARRAY_SIZE(android_ids); i++) - if (!strcmp(id, android_ids[i].name)) - return android_ids[i].aid; - return -1; -} - void set_device_permission(int nargs, char **args) { char *name; @@ -103,7 +97,6 @@ void set_device_permission(int nargs, char **args) int prefix = 0; int wildcard = 0; char *endptr; - int ret; char *tmp = 0; if (nargs == 0) @@ -151,21 +144,21 @@ void set_device_permission(int nargs, char **args) return; } - ret = get_android_id(args[2]); - if (ret < 0) { + struct passwd* pwd = getpwnam(args[2]); + if (!pwd) { ERROR("invalid uid '%s'\n", args[2]); free(tmp); return; } - uid = ret; + uid = pwd->pw_uid; - ret = get_android_id(args[3]); - if (ret < 0) { + struct group* grp = getgrnam(args[3]); + if (!grp) { ERROR("invalid gid '%s'\n", args[3]); free(tmp); return; } - gid = ret; + gid = grp->gr_gid; add_dev_perms(name, attr, perm, uid, gid, prefix, wildcard); free(tmp);