summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Salyzyn2017-05-04 15:54:46 -0500
committerMark Salyzyn2017-05-11 14:21:02 -0500
commitc4e4823b00a94627e922eada1172688818471b0c (patch)
treeb0b593e27514fb33ff7d07be943036620001e739 /logd/LogListener.h
parent46bb1ffa8ad3a4cb3d2fe31f6f7baee418b5df6e (diff)
downloadplatform-system-core-c4e4823b00a94627e922eada1172688818471b0c.tar.gz
platform-system-core-c4e4823b00a94627e922eada1172688818471b0c.tar.xz
platform-system-core-c4e4823b00a94627e922eada1172688818471b0c.zip
logd: validate and fill in socket credentials
- android::pidToUid() additional checking. Make sure if we have to convert a PID to an UID that the parse of /proc/<pid>/status requires a trailing space after the number - android::tidToPid() added, in the same vein as android::pidToUid(). - stats.tidToPid() added - If no credentials, set PID to 0 and UID to DEFAULT_OVERFLOWUID - If credentialed PID is 0, use stats.tidToPid() - If credentialed UID is DEFAULT_OVERFLOWUID, use stats.pidToUid() Test: remove +passcred from logd.rc for daemon and confirm very few UID=65534 or PID=0 cases actually show up Bug: 37985222 Change-Id: I7d20506e70e67beb3043d1537cf9450ab58dc278
Diffstat (limited to 'logd/LogListener.h')
-rw-r--r--logd/LogListener.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/logd/LogListener.h b/logd/LogListener.h
index e16c5fb62..a562a54b9 100644
--- a/logd/LogListener.h
+++ b/logd/LogListener.h
@@ -20,6 +20,16 @@
20#include <sysutils/SocketListener.h> 20#include <sysutils/SocketListener.h>
21#include "LogReader.h" 21#include "LogReader.h"
22 22
23// DEFAULT_OVERFLOWUID is defined in linux/highuid.h, which is not part of
24// the uapi headers for userspace to use. This value is filled in on the
25// out-of-band socket credentials if the OS fails to find one available.
26// One of the causes of this is if SO_PASSCRED is set, all the packets before
27// that point will have this value. We also use it in a fake credential if
28// no socket credentials are supplied.
29#ifndef DEFAULT_OVERFLOWUID
30#define DEFAULT_OVERFLOWUID 65534
31#endif
32
23class LogListener : public SocketListener { 33class LogListener : public SocketListener {
24 LogBufferInterface* logbuf; 34 LogBufferInterface* logbuf;
25 LogReader* reader; 35 LogReader* reader;