Commit graph

168 commits

Author SHA1 Message Date
Tom Cherry
2b3ebaf5c0 SocketClient: don't ignore SIGPIPE
1) All current users are better off ignoring SIGPIPE at the beginning
   of their process instead of ignoring it just for SocketClient
2) This isn't thread safe if users did want it, since sigaction()
   ignores SIGPIPE for the entire process
3) This costs 5-10% of logd CPU time when logcat is reading logs

Also clean up the error handling in SocketClient::sendDataLockedv().

Test: kill logcat and see that logd doesn't crash
Test: run simpleperf and see that no cycles are going to sigaction
Change-Id: I6532c8a0d71338e534411707b9a9bd785145c730
2020-07-31 15:53:18 -07:00
Elliott Hughes
2c89f97f0a Cleanup for #inclusivefixit.
Test: treehugger
Change-Id: I44f710cbda4497c9d01a1ff7c1dcdb8f0eda6acc
2020-07-28 11:11:55 -07:00
Jooyung Han
7ea0d74bc8 Set min_sdk_version to be part of mainline modules
Modules contributing mainline modules (APK/APEX) should set
min_sdk_version as well as apex_available.

For now setting min_sdk_version doesn't change build outputs.
But build-time checks will be added soon.

Bug: 152655956
Test: m
Change-Id: Ida890adfe6dfac79267fc0e18b63d2330266438c
2020-05-13 08:18:06 +09:00
Lorenzo Colitti
077d1ea61b Simplify code that parses ifa_flags.
When parsing an RTM_NEWADDR or RTM_DELADDR, ifaddr is always
present (unless the message is invalid). So ifaddr->ifa_flags is
always known before any attributes are parsed.

Bug: 155005831
Test: atest NetworkStackNextIntegrationTests:IpClientIntegrationTest continues to apss
Change-Id: Id1998faccca7d81c1b7f3e85e4912aa22919e94a
2020-05-11 22:33:27 +09:00
Lorenzo Colitti
096fc5351f Parse IFA_F_* values above 0x80.
In RTM_NEWADDR messages, the first 8 flags are reported in the
ifa_flags field in struct ifaddrmsg, but flags above 0x80 are
reported in the IFA_FLAGS attribute. NetlinkEvent currently only
looks at ifa_flags, so it cannot see higher-value flags such as
IFA_F_STABLE_PRIVACY. Fix this by parsing the IFA_FLAGS
attribute.

Bug: 155005831
Test: makes new test in aosp/1295495 pass
Change-Id: I723f1106cbcea2186fc6452305942a0f8301fd2a
2020-05-10 11:36:59 +09:00
Maciej Żenczykowski
a806a7153f NetlinkEvent - ignore captive portal and pref64 nd user opts
These are provided to userspace by newer kernels.

Test: builds
Bug: 150648313
Change-Id: I811c75e9a4739db149f502b9a43c99a8ed883341
2020-03-31 20:25:33 -07:00
Jeffrey Huang
0c0b774a64 Allow apexes to link against more libs
Bug: 145923087
Test: m -j
Change-Id: I45e002ffbd16f13b71f32c80e8a2f826bfa9ec2e
2020-02-14 10:41:15 -08:00
Christopher Ferris
71ac5c883b Copy necessary ipt_ULOG.h structure to source.
The ipt_ULOG.h file has been deprecated, so it's being removed from
the bionic uapi kernel headers. Since this is the only code that
is using that file, copy the one structure needed to parse one type
of message into the file that needs it.

Test: Builds.
Change-Id: Ib879e655d598256c424792675d24e647eee33f89
2019-12-10 12:53:39 -08:00
Lorenzo Colitti
d0e4938dfe Enable clang-tidy for libsysutils.
Enable the same warnings used elsewhere in the tree, and fix the
two warnings it found (two safe uses of strcpy and one use of
atoi).

Test: builds, boots
Test: atest libsysutils_tests
Test: atest --test-mapping system/netd
Change-Id: I8e5d04da20cc4127439ad9fbda0e4e64f0e671d3
2019-04-24 00:35:58 +09:00
Lorenzo Colitti
dae0195380 Make the SocketListener control pipe O_CLOEXEC.
Children of processes that use SocketListener should not be able
to stop the SocketListener.

Test: builds, boots
Test: atest libsysutils_tests
Test: atest --test-mapping system/netd
Change-Id: I64898d9966f62004468b8e8a43b59be4a81a8cc4
2019-04-10 12:11:42 +09:00
Luke Huang
9f409f2e4c Enlarge cmd buffer size of FrameworkListener
Only Netd and Logd use FrameworkListener currently.
Run realted test to ensure anything are still fine.

Bug: 126307309
Test: built, flashed, booted
      system/netd/tests/runtests.sh pass
      atest CtsLogdTestCases

Change-Id: Iacd0cc13f23f457a0868a8a706080c3edc9a3cbd
2019-03-21 23:09:16 +08:00
junyulai
54302442e2 Refactor OWNERS files for Android Core Networking
Bug: 120829091
Test: build/make/tools/checkowners.py -c -v path/OWNERS
Change-Id: I0b9dd6a6c01e46d887d1161179ca3791f461dce6
2019-02-14 14:13:53 +08:00
Mike Yu
c987859c70 libsysutils can be linked statically
Let libsysutils able to be statically linked by libnetd_resolv to
minimize the dependence on system ABI.

Test: m libsysutils
Change-Id: Ideb322dbc8d594a8a37d64f8140bc37090a4e238
2018-12-06 12:32:49 +09:00
Chih-Hung Hsieh
e6e2b3cda4 Suppress implicit-fallthrough warning.
Bug: 112564944
Test: make checkbuild
Change-Id: I2bcfd08ec62f6d5953a9e25dbeaa42ffefda6d1c
2018-10-10 14:39:02 -07:00
Chih-Hung Hsieh
502f4864d6 Suppress implicit-fallthrough warnings.
Add FALLTHROUGH_INTENDED for clang compiler.

Bug: 112564944
Test: build with global -Wimplicit-fallthrough.
Change-Id: I40f8bbf94e207c9dd90921e9b762ba51abab5777
2018-09-17 16:50:11 +00:00
Bernie Innocenti
11b33690e4 Delete sysutils/List.h
Convert the last user to a regular std::vector, and then put List.h out
of its misery.

Turns out there's another copy of this ancient header:
system/core/libutils/include/utils/List.h. This one is included in
various places, but most don't actually use it. There seems to
be a case for a tool to detect unused headers...

Test: m
Change-Id: Ie457bf5e06f6082537f5de2e1fefe7f05a1f0792
2018-09-05 21:07:23 +09:00
Chih-hung Hsieh
33f91de2c6 Merge "Use multiple patterns and emails in per-file syntax." 2018-08-28 17:03:44 +00:00
Bernie Innocenti
ca76859aca SocketListener: use poll() instead of select()
FD_SET is limited to 1024 file descriptors in Linux, which causes
processes with too many open files or connections to crash:

  FORTIFY: FD_ISSET: file descriptor 1024 >= FD_SETSIZE 128

The fix we used elsewhere is replacing select() with poll(), but in the
case of SocketListener we additionally need to replace the SocketClient
list with a map indexed by fd in order to avoid quadratic behavior on
each poll() wakeup.

Bug: 79838856
Test: device boots and appears to work normally, tests pass
Change-Id: I4a8f1804fa990d3db3a2c96b9acd60b2c7135950
2018-08-28 05:52:56 +09:00
Bernie Innocenti
763ccaa104 libsysutils: add some rudimentary tests
Test: atest libsysutils_tests
Change-Id: I3aa44c5af821c3161cf598b86216480d2424d336
2018-08-28 05:52:48 +09:00
Chih-Hung Hsieh
3487e22b66 Use multiple patterns and emails in per-file syntax.
Test: build/make/tools/checkowners.py -c -v OWNERS
Change-Id: I60460b93903afbb01a87d7f11ac526fbde9f392c
2018-08-27 10:19:32 -07:00
Yi Kong
4888525c55 [libsysutils] Modernize codebase by replacing NULL with nullptr
Fixes -Wzero-as-null-pointer-constant warning.

Test: m
Bug: 68236239
Change-Id: I9e95daa0750f2622d1c4788941fdfae23ee61801
2018-07-24 16:34:27 -07:00
Rubin Xu
6effd4d6a3 Merge "Parse IfIndex for Netlink RTM_NEWADDR / RTM_DELADDR event" 2018-06-27 16:27:26 +00:00
Treehugger Robot
5911204326 Merge "libsysutils: Delete dead code: FrameworkClient" 2018-06-07 16:44:24 +00:00
Bernie Innocenti
246d35d02b libsysutils: Delete dead code: FrameworkClient
Test: mm
Change-Id: I372f2aa8d7f7e3f5ce1cd9399292bef9e4900de7
2018-06-07 20:20:01 +09:00
Rubin Xu
5f4062438b Parse IfIndex for Netlink RTM_NEWADDR / RTM_DELADDR event
Bug: 64692591
Test: cts-tradefed run commandAndExit cts-dev -m CtsHostsideNetworkTests -t com.android.cts.net.HostsideVpnTests
Change-Id: Icb2ae1264f0d2fcd285b04edd27641175dd2646f
Merged-In: Icb2ae1264f0d2fcd285b04edd27641175dd2646f
(cherry picked from commit 3668291d8e)
2018-06-07 08:10:47 +01:00
Lorenzo Colitti
2a7c887198 Merge "Move per-file OWNERS directives to their directories." 2018-06-06 07:48:55 +00:00
Lorenzo Colitti
58f2daaeb4 Move per-file OWNERS directives to their directories.
As documented at go/gerrit-owners, per-file directives cannot
contain directory paths. Therefore the current per-file
directives in system/core/OWNERS have no effect.

Test: build/make/tools/checkowners.py system/core/{,libsysutils/src/,include/sysutils/}OWNERS
Change-Id: Ia88b2be42dd50346578bb51dd17fb6136a4591f1
2018-06-06 11:49:40 +09:00
Kevin Rocard
775ad25510 Revert "SocketListener: use poll() instead of select()"
This reverts commit 0ad41cf3f4.

Reason for revert: Breaks many tests, see b/109745952#comment18 b/109745952#comment20 and b/79838856#comment19 amongst others

Change-Id: I92db38d47cd1dcd7841091e37e3b65dce9456cdf
2018-06-06 02:17:24 +00:00
Bernie Innocenti
0ad41cf3f4 SocketListener: use poll() instead of select()
FD_SET is limited to 1024 file descriptors in Linux, which causes
processes with too many open files or connections to crash:

  FORTIFY: FD_ISSET: file descriptor 1024 >= FD_SETSIZE 128

The fix we used elsewhere is replacing select() with poll(), but in the
case of SocketListener we additionally need to replace the SocketClient
list with a map indexed by fd in order to avoid quadratic behavior on
each poll() wakeup.

Bug: 79838856
Test: device boots and appears to work normally
Change-Id: I19ca4be675e9638104c0e7acf4a4bc62085e8ecd
2018-05-25 18:43:12 +09:00
Chenbo Feng
5e5e5e9a73 Include iface index in the netlink event
The TrafficController inside netd also get notified when the interface
on device added or removed, and it need both ifaceName and ifaceIndex
information from Netlink event. Add the ifaceIndex in the event can
avoid the TrafficController to run if_nametoindex again when receive
the event.

Bug: 30950746
Bug: 73137611
Test: new interface show up in bpf interface map.
Change-Id: Ia3b4aeb8eff345ce7cf03ccec88f0893cfe125c0
2018-03-07 11:39:52 +09:00
Lorenzo Colitti
cbfd65d947 Don't complain that the DNSSL RA option is "unknown".
This option isn't unknown, we just don't support it.

Bug: 69778511
Test: walleye builds, boots, connects to IPv6 network
Change-Id: If3a37d855f404da708fec4a7ba242ed41a493895
2017-11-28 06:42:04 +00:00
Lorenzo Colitti
e439ffc762 Stop depending on libnl.
We only use it for trivial functions. Replace them and drop the
dependency.

Bug: 67345547
Test: bullhead builds, boots
Test: CtsOsTestCases android.os.cts.StrictModeTest passes
Change-Id: I36254962284babdd1a55a32a76dd0dc92d85420c
2017-10-05 14:56:44 +09:00
Justin Yun
6a7e882316 Mark the modules as VNDK in Android.bp
As a VNDK module, Android.bp must have 'vndk' tag as well as
'vendor_available: true'.

The 'vndk' tag for VNDK module is formated as below:
vndk: {
        enabled: true,
},

VNDK modules will be installed both in system/lib(64) as normal and
in system/lib(64)/vndk as a vendor variant.

Bug: 63866913
Test: build and boot with BOARD_VNDK_VERSION=current
Merged-In: Icecb22ed2ed0f58c3168605d4cf64815e2dda750
Change-Id: Icecb22ed2ed0f58c3168605d4cf64815e2dda750
(cherry picked from commit 9b0ed72942)
2017-09-14 08:35:16 +00:00
Yifan Hong
087f3b74af Remove old LOG_EVENT_* code from libsysutils
As a side effect, this change fixes
libbsysutils => liblog dependencies. LOG_EVENT_*
macros are not defined for liblog.vendor.

Test: BOARD_VNDK_VERSION=current mma
Bug: 33241851
Bug: 63034227
Change-Id: I3df700d97481ec9aa59cf1796da1e991af28bdf5
2017-07-11 15:14:26 -07:00
NIEJuhu
d3c86412ad libsysutils: Fix vold vulnerability in FrameworkListener
Don't release the sender socket when FrameworkListener receives
a command that exceed the maximum buffer length

Bug: https://issuetracker.google.com/issues/62812018
Test: manual

Change-Id: I160f504f3fb902ba25fc79deb8ae7d78d811a807
2017-06-20 06:32:11 +00:00
Jayant Chowdhary
a1bdd2412e Mark libsysutils vendor_available.
libsysutils belongs to vndk-cap. Mark it vendor_available to enable vndk
abi stability checks on it.

Details: https://android-review.googlesource.com/368372

Test: mm -j64

Bug: 38244611

Change-Id: I3ef1d09c7e836549eb13ce68ac7cdcd5923bde0f
2017-05-24 13:01:24 -07:00
Steven Moreland
d0d759dc09 libsysutils: Android.mk -> Android.bp
Test: links
Change-Id: If1d034ecb880e8c41d58b14ebebcda5b72e88424
2017-04-24 17:15:31 -07:00
Elliott Hughes
b7788fd454 There's no longer a limit to property names.
Bug: http://b/33926793
Test: boots
Change-Id: I8554d7af74e064c114cf817f5a2ba1247fa2a2db
2017-02-28 14:12:54 -08:00
Yunlian Jiang
33f671782a fix warning: Null pointer argument in call to memory comparison function
This fixes  warning: Null pointer argument in call to
memory comparison function [clang-analyzer-cplusplus.NewDeleteLeaks]

Bug: None
Test: The warning is gone.
Change-Id: I957365184966cc1435d7e37d64f2cc6a32846ebd
2017-02-08 16:47:20 -08:00
Vijay Venkatraman
75acc7bf81 Exporting C++ headers from system/core
Moved headers from include/libutils and include/libsysutils to
libutils/include and libsysutils/include respectively, so they can be
exported via these libs. They needed to be moved since Soong does
not allow export from external folder.

Added symlink from old locations. They are needed since Soong
includes system/core/include by default. Once all modules are
cleaned up to explicitly add the required libs, the symlinks will be
removed.

Moved headers of libutils to libutils_headers. They should be used
by modules for header-only inlines. Added libutils_headers as
dependency of libutils.

Split of C++ headers into those that have no dependency and those that
have dependency on libutils.so will be handled in a later CL.

Test: Add above libs to shared lib of local module
Change-Id: I122db72056b26b1f39bad1d9a0c2a1c5efda3550
2017-01-24 22:51:36 +00:00
Mark Salyzyn
8a7297a09f Merge "system/core: preparation to pull back interfaces from android/log.h"
am: 27d2d49f48

Change-Id: I604bb1d4cf62636663fa92e3d14a55887dbcae23
2016-10-20 18:03:57 +00:00
Mark Salyzyn
cfd5b080af system/core: preparation to pull back interfaces from android/log.h
Point to log/log.h where necessary, define LOG_TAG where necessary.
Accept that private/android_logger.h is suitable replacement for
log/logger.h and android/log.h.

Correct liblog/README

Effectively a cleanup and controlled select revert of
'system/core: drop or replace log/logger.h' and
'system/core: Replace log/log.h with android/log.h'.

Test: compile
Bug: 30465923
Change-Id: Ic2ad157bad6f5efe2c6af293a73bb753300b17a2
2016-10-20 08:11:39 -07:00
Mark Salyzyn
16f7786032 system/core Replace cutils/log.h with android/log.h am: 66ce3e08c5
am: eb189f147b

Change-Id: I3f2b13e259d9bbb7bc714f21eab7181fa72c35bf
2016-09-30 22:12:55 +00:00
Mark Salyzyn
66ce3e08c5 system/core Replace cutils/log.h with android/log.h
Should use android/log.h instead of cutils/log.h as a good example
to all others.  Adjust header order to comply with Android Coding
standards.

Test: Compile
Bug: 26552300
Bug: 31289077
Change-Id: I2c9cbbbd64d8dccf2d44356361d9742e4a9b9031
2016-09-30 12:47:05 -07:00
Elliott Hughes
66e5e2432a Merge "Most accept/accept4 calls in system/core don't actually want the remote address." am: 299d64144b
am: 8615d79d85

Change-Id: I89aeabf6efa8217c9acd3f8a766bbd18f7e994fa
2016-08-23 23:05:59 +00:00
Elliott Hughes
8615d79d85 Merge "Most accept/accept4 calls in system/core don't actually want the remote address."
am: 299d64144b

Change-Id: I3fb9678dfed08f0b1d6e90e547ecae6cdcabc9a1
2016-08-23 23:03:20 +00:00
Elliott Hughes
3dcfa3fb1c Most accept/accept4 calls in system/core don't actually want the remote address.
So don't write the extra code for it or waste the kernel's time
copying it around.

Change-Id: I93de64064c2d4fe58ba5b5322cfa69bf31a76dad
2016-08-23 12:50:00 -07:00
Connor O'Brien
233c9902cf Fix vold vulnerability in FrameworkListener am: 470484d2a2 am: e9e046df6c am: 109024f74a am: b906ad88b9 am: 2fadbb93a4 am: e04054d9bb am: 9745b11db1 am: 2f78b2c3d6 am: 2b5e6d8ffc am: 2427a462c0 am: 6b155c1cc4
am: 2f16eeede6

Change-Id: I3d2fdfc10f91080ca32aa6557b13391355427edc
2016-08-19 22:53:32 +00:00
Connor O'Brien
2f16eeede6 Fix vold vulnerability in FrameworkListener am: 470484d2a2 am: e9e046df6c am: 109024f74a am: b906ad88b9 am: 2fadbb93a4 am: e04054d9bb am: 9745b11db1 am: 2f78b2c3d6 am: 2b5e6d8ffc am: 2427a462c0
am: 6b155c1cc4

Change-Id: Ie6c2bcee1deacb94259a6153097757674fa19251
2016-08-19 22:50:00 +00:00
Connor O'Brien
2f78b2c3d6 Fix vold vulnerability in FrameworkListener am: 470484d2a2 am: e9e046df6c am: 109024f74a am: b906ad88b9 am: 2fadbb93a4 am: e04054d9bb
am: 9745b11db1

Change-Id: I61f685976803f51db9ba85729554fc14efaa4b2c
2016-08-19 22:36:29 +00:00