aboutsummaryrefslogtreecommitdiffstats
path: root/extcap
diff options
context:
space:
mode:
authorAlexis La Goutte <alexis.lagoutte@gmail.com>2015-04-09 22:36:13 +0200
committerMichael Mann <mmann78@netscape.net>2015-04-09 23:13:47 +0000
commit10e20531d327b8baa2d9ab932eb7564dc3b8ffd9 (patch)
treeb57f98fc9566f13f4322a4eeee86cff629c7d7be /extcap
parentdc4345b4d104bc79873a6b290a22f5b1a0cd76ea (diff)
Androiddump: fix Potential leak of memory pointed to by 'serial_number'
Change-Id: Ib244ec9a94d99a3589d411a4e3bcb1b03212b82e Reviewed-on: https://code.wireshark.org/review/7987 Reviewed-by: Michal Labedzki <michal.labedzki@tieto.com> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'extcap')
-rw-r--r--extcap/androiddump.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/extcap/androiddump.c b/extcap/androiddump.c
index 088e31dcf8..933b2fa358 100644
--- a/extcap/androiddump.c
+++ b/extcap/androiddump.c
@@ -482,7 +482,7 @@ static int add_android_interfaces(struct interface_t **interface_list,
const char *adb_api_level = "0022""shell:getprop ro.build.version.sdk";
const char *adb_hcidump_version = "0017""shell:hcidump --version";
const char *adb_ps_droid_bluetooth = "0018""shell:ps droid.bluetooth";
- char *serial_number;
+ char serial_number[512];
int result;
char *interface_name;
char *pos;
@@ -510,10 +510,13 @@ static int add_android_interfaces(struct interface_t **interface_list,
prev_pos = pos;
pos = strchr(pos, '\t');
result = (int) (pos - prev_pos);
- serial_number = (char *) malloc(result + 1);
+ pos = strchr(pos, '\n') + 1;
+ if (result > (int) sizeof(serial_number)) {
+ fprintf(stderr, "WARNING: Serial number too long, ignore device\n");
+ continue;
+ }
memcpy(serial_number, prev_pos, result);
serial_number[result] = '\0';
- pos = strchr(pos, '\n') + 1;
sock = adb_connect(adb_server_ip, adb_server_tcp_port);