logd: switch from android_ids to getpwuid

Bug: 27999086
Change-Id: I7f4e68b21f58789b4dcada04f9c27f5722940c02
This commit is contained in:
Mark Salyzyn 2016-04-07 11:06:31 -07:00
parent e99283103b
commit b8a95bd3c9
1 changed files with 16 additions and 7 deletions

View File

@ -15,8 +15,10 @@
*/
#include <fcntl.h>
#include <pwd.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <log/logger.h>
@ -159,14 +161,13 @@ const char *LogStatistics::uidToName(uid_t uid) const {
return strdup("auditd");
}
// Android hard coded
const struct android_id_info *info = android_ids;
for (size_t i = 0; i < android_id_count; ++i) {
if (info->aid == uid) {
return strdup(info->name);
// Android system
if (uid < AID_APP) {
// in bionic, thread safe as long as we copy the results
struct passwd *pwd = getpwuid(uid);
if (pwd) {
return strdup(pwd->pw_name);
}
++info;
}
// Parse /data/system/packages.list
@ -179,6 +180,14 @@ const char *LogStatistics::uidToName(uid_t uid) const {
return name;
}
// Android application
if (uid >= AID_APP) {
struct passwd *pwd = getpwuid(uid);
if (pwd) {
return strdup(pwd->pw_name);
}
}
// report uid -> pid(s) -> pidToName if unique
for(pidTable_t::const_iterator it = pidTable.begin(); it != pidTable.end(); ++it) {
const PidEntry &entry = it->second;