diff options
author | Chiachang Wang <chiachangwang@google.com> | 2019-11-28 04:26:39 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2019-11-28 04:26:39 +0000 |
commit | ed4e6885d87c3216618d01a6cc5b072efe32bc41 (patch) | |
tree | 359de99c7f6aba0a616df6d313dc265b316a93cc /src | |
parent | 00e3086c939ef0865c8182982a9f3d94da854a3b (diff) | |
parent | c46b981ef03366f1171aead5cf1c5a6026404420 (diff) |
Merge "Avoid incorrect nlmsg_type in returned INetDiagMessage"
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/networkstack/netlink/TcpSocketTracker.java | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/com/android/networkstack/netlink/TcpSocketTracker.java b/src/com/android/networkstack/netlink/TcpSocketTracker.java index d3057ea..a055617 100644 --- a/src/com/android/networkstack/netlink/TcpSocketTracker.java +++ b/src/com/android/networkstack/netlink/TcpSocketTracker.java @@ -20,6 +20,7 @@ import static android.net.netlink.NetlinkConstants.INET_DIAG_MEMINFO; import static android.net.netlink.NetlinkConstants.NLA_ALIGNTO; import static android.net.netlink.NetlinkConstants.NLMSG_DONE; import static android.net.netlink.NetlinkConstants.SOCKDIAG_MSG_HEADER_SIZE; +import static android.net.netlink.NetlinkConstants.SOCK_DIAG_BY_FAMILY; import static android.net.netlink.StructNlMsgHdr.NLM_F_DUMP; import static android.net.netlink.StructNlMsgHdr.NLM_F_REQUEST; import static android.net.util.DataStallUtils.CONFIG_MIN_PACKETS_THRESHOLD; @@ -180,8 +181,15 @@ public class TcpSocketTracker { } final int nlmsgLen = nlmsghdr.nlmsg_len; log("pollSocketsInfo: nlmsghdr=" + nlmsghdr); + // End of the message. Stop parsing. if (nlmsghdr.nlmsg_type == NLMSG_DONE) break; + if (nlmsghdr.nlmsg_type != SOCK_DIAG_BY_FAMILY) { + Log.e(TAG, "Expect to get family " + family + + " SOCK_DIAG_BY_FAMILY message but get " + nlmsghdr.nlmsg_type); + break; + } + if (isValidInetDiagMsgSize(nlmsgLen)) { // Get the socket cookie value. Composed by two Integers value. // Corresponds to inet_diag_sockid in |