platform_system_core/logd
Nick Kralevich 58ba58a97c logd: Don't embed a flexible array member within another struct
C (but not C++) has a concept of a flexible array member, which
is documented at https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html .
Using a flexible array member indicates that the structure is
really a header for a variable length object.

In logd's case, the variable length structure android_event_string_t
was embedded within another structure called
android_log_event_string_t. This makes gcc's __builtin_object_size()
function really confused. When compiling with C++,
__builtin_object_size(android_log_event_string_t.payload.data, 1)
would return 0, whereas if you compiled the code with C, the same
call would (properly) return -1.

Code which does automatic bounds checking, such as the proposed
patch at https://android-review.googlesource.com/145411 , will
cause problems for logd if this syntax is used.

Don't try to embed a variable length structure within another
structure. This doesn't appear to be valid C nor C++, and
while it's worked, it seems problematic.

Instead, inline the structure so it's one big happy structure.

Change-Id: I8ac02b7142a4f6560f5f80df2effcf720f9896fc
2015-04-07 10:12:20 -07:00
..
tests Remove LOCAL_ADDITIONAL_DEPENDENCIES in cases where it's not needed. 2015-04-02 14:31:07 -07:00
Android.mk logd: build cleanup 2015-03-09 10:02:51 -07:00
CommandListener.cpp logd: add reinit command 2015-03-12 12:24:47 -07:00
CommandListener.h logd: add reinit command 2015-03-12 12:24:47 -07:00
FlushCommand.cpp logd: replace internal CLOCK_MONOTONIC use with sequence numbers 2015-03-18 12:43:23 -07:00
FlushCommand.h logd: replace internal CLOCK_MONOTONIC use with sequence numbers 2015-03-18 12:43:23 -07:00
LogAudit.cpp logd: Don't embed a flexible array member within another struct 2015-04-07 10:12:20 -07:00
LogAudit.h logd: auditd remove logDmesg method 2014-12-05 20:56:44 +00:00
LogBuffer.cpp logd: optimize statistics 2015-03-20 12:31:23 -07:00
LogBuffer.h logd: optimize statistics 2015-03-20 12:31:23 -07:00
LogBufferElement.cpp logd: replace internal CLOCK_MONOTONIC use with sequence numbers 2015-03-18 12:43:23 -07:00
LogBufferElement.h logd: optimize statistics 2015-03-20 12:31:23 -07:00
LogCommand.cpp logd: missing include for string.h 2015-04-01 11:18:42 -07:00
LogCommand.h logd: institute getGroups for socket credentials 2014-02-28 13:48:33 -08:00
LogListener.cpp logd: create private/android_logger.h 2015-01-23 23:32:11 +00:00
LogListener.h logd: initial checkin. 2014-02-26 09:52:35 -08:00
LogReader.cpp logd: replace internal CLOCK_MONOTONIC use with sequence numbers 2015-03-18 12:43:23 -07:00
LogReader.h logd: libsysutils: logd startup outside init environment 2014-04-17 16:14:24 +00:00
LogStatistics.cpp logd: statistics: missing comma 2015-03-20 13:46:00 -07:00
LogStatistics.h logd: optimize statistics 2015-03-20 12:31:23 -07:00
LogTimes.cpp logd: replace internal CLOCK_MONOTONIC use with sequence numbers 2015-03-18 12:43:23 -07:00
LogTimes.h logd: replace internal CLOCK_MONOTONIC use with sequence numbers 2015-03-18 12:43:23 -07:00
LogWhiteBlackList.cpp Add missing <malloc.h> and <string.h> includes. 2015-01-28 11:37:57 -08:00
LogWhiteBlackList.h logd: optimize statistics 2015-03-20 12:31:23 -07:00
README.auditd logd: selinux auditd initial commit 2014-04-07 10:51:00 -07:00
README.property Revert "logd: Add minimum time bucket statistics" 2015-03-04 13:21:41 -08:00
event.logtags logd: logcat: debuggerd: auditd logs to events 2014-05-15 08:50:50 -07:00
libaudit.c libaudit: limit to 5 selinux denials per sec 2015-03-26 14:04:13 -07:00
libaudit.h logd: throttle SELinux denials to 20/sec 2014-11-19 13:35:36 -08:00
main.cpp logd: report reinit 2015-03-12 20:38:53 +00:00

README.property

The properties that logd responds to are:

name                       type default  description
logd.auditd                 bool  true   Enable selinux audit daemon
logd.auditd.dmesg           bool  true   selinux audit messages duplicated and
                                         sent on to dmesg log
logd.statistics             bool depends Enable logcat -S statistics.
ro.config.low_ram           bool  false  if true, logd.statistics default false
ro.build.type               string       if user, logd.statistics default false
persist.logd.size          number 256K   default size of the buffer for all
                                         log ids at initial startup, at runtime
                                         use: logcat -b all -G <value>
persist.logd.size.main     number 256K   Size of the buffer for the main log
persist.logd.size.system   number 256K   Size of the buffer for the system log
persist.logd.size.radio    number 256K   Size of the buffer for the radio log
persist.logd.size.event    number 256K   Size of the buffer for the event log
persist.logd.size.crash    number 256K   Size of the buffer for the crash log

NB:
- number support multipliers (K or M) for convenience. Range is limited
  to between 64K and 256M for log buffer sizes. Individual logs override the
  global default.