Loading logd/LogAudit.cpp +11 −2 Original line number Diff line number Diff line Loading @@ -145,7 +145,9 @@ int LogAudit::logPrint(const char *fmt, ...) { ++cp; } tid = pid; logbuf->lock(); uid = logbuf->pidToUid(pid); logbuf->unlock(); memmove(pidptr, cp, strlen(cp) + 1); } Loading Loading @@ -180,15 +182,21 @@ int LogAudit::logPrint(const char *fmt, ...) { static const char comm_str[] = " comm=\""; const char *comm = strstr(str, comm_str); const char *estr = str + strlen(str); char *commfree = NULL; if (comm) { estr = comm; comm += sizeof(comm_str) - 1; } else if (pid == getpid()) { pid = tid; comm = "auditd"; } else if (!(comm = logbuf->pidToName(pid))) { } else { logbuf->lock(); comm = commfree = logbuf->pidToName(pid); logbuf->unlock(); if (!comm) { comm = "unknown"; } } const char *ecomm = strchr(comm, '"'); if (ecomm) { Loading Loading @@ -218,6 +226,7 @@ int LogAudit::logPrint(const char *fmt, ...) { } } free(commfree); free(str); if (notify) { Loading logd/LogBuffer.h +3 −1 Original line number Diff line number Diff line Loading @@ -71,10 +71,12 @@ public: // *strp uses malloc, use free to release. void formatPrune(char **strp) { mPrune.format(strp); } // helper // helper must be protected directly or implicitly by lock()/unlock() char *pidToName(pid_t pid) { return stats.pidToName(pid); } uid_t pidToUid(pid_t pid) { return stats.pidToUid(pid); } char *uidToName(uid_t uid) { return stats.uidToName(uid); } void lock() { pthread_mutex_lock(&mLogElementsLock); } void unlock() { pthread_mutex_unlock(&mLogElementsLock); } private: void maybePrune(log_id_t id); Loading logd/LogBufferElement.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -111,13 +111,17 @@ size_t LogBufferElement::populateDroppedMessage(char *&buffer, } static const char format_uid[] = "uid=%u%s%s expire %u line%s"; parent->lock(); char *name = parent->uidToName(mUid); parent->unlock(); char *commName = android::tidToName(mTid); if (!commName && (mTid != mPid)) { commName = android::tidToName(mPid); } if (!commName) { parent->lock(); commName = parent->pidToName(mPid); parent->unlock(); } size_t len = name ? strlen(name) : 0; if (len && commName && !strncmp(name, commName, len)) { Loading logd/LogStatistics.h +1 −1 Original line number Diff line number Diff line Loading @@ -334,7 +334,7 @@ public: // *strp = malloc, balance with free void format(char **strp, uid_t uid, unsigned int logMask); // helper // helper (must be locked directly or implicitly by mLogElementsLock) char *pidToName(pid_t pid); uid_t pidToUid(pid_t pid); char *uidToName(uid_t uid); Loading Loading
logd/LogAudit.cpp +11 −2 Original line number Diff line number Diff line Loading @@ -145,7 +145,9 @@ int LogAudit::logPrint(const char *fmt, ...) { ++cp; } tid = pid; logbuf->lock(); uid = logbuf->pidToUid(pid); logbuf->unlock(); memmove(pidptr, cp, strlen(cp) + 1); } Loading Loading @@ -180,15 +182,21 @@ int LogAudit::logPrint(const char *fmt, ...) { static const char comm_str[] = " comm=\""; const char *comm = strstr(str, comm_str); const char *estr = str + strlen(str); char *commfree = NULL; if (comm) { estr = comm; comm += sizeof(comm_str) - 1; } else if (pid == getpid()) { pid = tid; comm = "auditd"; } else if (!(comm = logbuf->pidToName(pid))) { } else { logbuf->lock(); comm = commfree = logbuf->pidToName(pid); logbuf->unlock(); if (!comm) { comm = "unknown"; } } const char *ecomm = strchr(comm, '"'); if (ecomm) { Loading Loading @@ -218,6 +226,7 @@ int LogAudit::logPrint(const char *fmt, ...) { } } free(commfree); free(str); if (notify) { Loading
logd/LogBuffer.h +3 −1 Original line number Diff line number Diff line Loading @@ -71,10 +71,12 @@ public: // *strp uses malloc, use free to release. void formatPrune(char **strp) { mPrune.format(strp); } // helper // helper must be protected directly or implicitly by lock()/unlock() char *pidToName(pid_t pid) { return stats.pidToName(pid); } uid_t pidToUid(pid_t pid) { return stats.pidToUid(pid); } char *uidToName(uid_t uid) { return stats.uidToName(uid); } void lock() { pthread_mutex_lock(&mLogElementsLock); } void unlock() { pthread_mutex_unlock(&mLogElementsLock); } private: void maybePrune(log_id_t id); Loading
logd/LogBufferElement.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -111,13 +111,17 @@ size_t LogBufferElement::populateDroppedMessage(char *&buffer, } static const char format_uid[] = "uid=%u%s%s expire %u line%s"; parent->lock(); char *name = parent->uidToName(mUid); parent->unlock(); char *commName = android::tidToName(mTid); if (!commName && (mTid != mPid)) { commName = android::tidToName(mPid); } if (!commName) { parent->lock(); commName = parent->pidToName(mPid); parent->unlock(); } size_t len = name ? strlen(name) : 0; if (len && commName && !strncmp(name, commName, len)) { Loading
logd/LogStatistics.h +1 −1 Original line number Diff line number Diff line Loading @@ -334,7 +334,7 @@ public: // *strp = malloc, balance with free void format(char **strp, uid_t uid, unsigned int logMask); // helper // helper (must be locked directly or implicitly by mLogElementsLock) char *pidToName(pid_t pid); uid_t pidToUid(pid_t pid); char *uidToName(uid_t uid); Loading