diff options
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 |