androiddump: Fix btsnoop net port lookup

Code assumes btsnoop net port is the first tcp socket found in
/proc/<pid>/net/tcp. If it is not the port number lookup will
fail.

Fixed by searching all open tcp sockets for a match.

Change-Id: I988fe18680600b59c595f3d619d95c72c1a6966d
Reviewed-on: https://code.wireshark.org/review/26651
Petri-Dish: Roland Knall <rknall@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Roland Knall <rknall@gmail.com>
This commit is contained in:
Mikael Kanstrup 2018-03-26 10:41:00 +02:00 committed by Roland Knall
parent 69d080700d
commit 789db1f15d
1 changed files with 9 additions and 5 deletions

View File

@ -1225,11 +1225,15 @@ static int register_interfaces(extcap_parameters * extcap_conf, const char *adb_
disable_interface = 1;
} else {
response[data_length] = '\0';
data_str = strchr(response, '\n');
if (data_str && sscanf(data_str, "%*s %15s", pid) == 1 && strlen(pid) > 10 && strcmp(pid + 9, "22A8") == 0) {
g_debug("Btsnoop Net Port for %s is %s", serial_number, pid + 9);
} else {
data_str = strtok(response, "\n");
while (data_str != NULL) {
if (data_str && sscanf(data_str, "%*s %15s", pid) == 1 && strlen(pid) > 10 && strcmp(pid + 9, "22A8") == 0) {
g_debug("Btsnoop Net Port for %s is %s", serial_number, pid + 9);
break;
}
data_str = strtok(NULL, "\n");
}
if (data_str == NULL) {
disable_interface = 1;
g_debug("Btsnoop Net Port for %s is unknown", serial_number);
}