summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2021-03-29 22:06:58 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2021-03-29 22:06:58 +0000
commit5583467c5157ff586ff562f1a8c433175ba5f55a (patch)
tree8170680cd720abea1616736e5f313b209a5c376a
parent5a1ac6ef7be75387435f8c08195df5850d24f6ae (diff)
parent0df16c93d1d092cb5445ed9e1a9899e0f25e0f6d (diff)
downloadnetd-android11-qpr3-release.tar.gz
Change-Id: I708d1ed1529c39ac9e8497bff7c2fb7a9f9dd169
-rw-r--r--server/SockDiag.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/server/SockDiag.cpp b/server/SockDiag.cpp
index 44bda3b0..e0b6b4b7 100644
--- a/server/SockDiag.cpp
+++ b/server/SockDiag.cpp
@@ -31,6 +31,7 @@
#include <cinttypes>
+#include <android-base/properties.h>
#include <android-base/strings.h>
#include <log/log.h>
#include <netdutils/InternetAddresses.h>
@@ -52,6 +53,15 @@ using netdutils::Stopwatch;
namespace net {
namespace {
+int getAdbPort() {
+ return android::base::GetIntProperty("service.adb.tcp.port", 0);
+}
+
+bool isAdbSocket(const inet_diag_msg *msg, int adbPort) {
+ return adbPort > 0 && msg->id.idiag_sport == htons(adbPort) &&
+ (msg->idiag_uid == AID_ROOT || msg->idiag_uid == AID_SHELL);
+}
+
int checkError(int fd) {
struct {
nlmsghdr h;
@@ -414,7 +424,8 @@ int SockDiag::destroySockets(const UidRanges& uidRanges, const std::set<uid_t>&
return msg != nullptr &&
uidRanges.hasUid(msg->idiag_uid) &&
skipUids.find(msg->idiag_uid) == skipUids.end() &&
- !(excludeLoopback && isLoopbackSocket(msg));
+ !(excludeLoopback && isLoopbackSocket(msg)) &&
+ !isAdbSocket(msg, getAdbPort());
};
iovec iov[] = {