From 90050b25284b4ff19c6f25524de8364241cd8c5d Mon Sep 17 00:00:00 2001 From: Chalard Jean <jchalard@google.com> Date: Mon, 25 Sep 2023 16:29:12 +0900 Subject: [PATCH] Fix a socket leak MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Test: manual : adb root adb shell lsof | grep system_ | grep IPv adb shell dumpsys connectivity --diag adb shell lsof | grep system_ | grep IPv Before the change : plenty of new open FDs After the change : no new FD Bug: 297483305 Change-Id: I1c1fb8de44e50998e99af8b3aac3f77edce903e0 --- .../com/android/server/connectivity/NetworkDiagnostics.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/service/src/com/android/server/connectivity/NetworkDiagnostics.java b/service/src/com/android/server/connectivity/NetworkDiagnostics.java index e1e2585aea..3db37e59e0 100644 --- a/service/src/com/android/server/connectivity/NetworkDiagnostics.java +++ b/service/src/com/android/server/connectivity/NetworkDiagnostics.java @@ -340,8 +340,9 @@ public class NetworkDiagnostics { @TargetApi(Build.VERSION_CODES.S) private int getMtuForTarget(InetAddress target) { final int family = target instanceof Inet4Address ? AF_INET : AF_INET6; + FileDescriptor socket = null; try { - final FileDescriptor socket = Os.socket(family, SOCK_DGRAM, 0); + socket = Os.socket(family, SOCK_DGRAM, 0); mNetwork.bindSocket(socket); Os.connect(socket, target, 0); if (family == AF_INET) { @@ -352,6 +353,8 @@ public class NetworkDiagnostics { } catch (ErrnoException | IOException e) { Log.e(TAG, "Can't get MTU for destination " + target, e); return -1; + } finally { + IoUtils.closeQuietly(socket); } } -- GitLab