summaryrefslogtreecommitdiff
path: root/extcap
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2016-09-16 10:41:11 -0700
committerGuy Harris <guy@alum.mit.edu>2016-09-16 17:42:03 +0000
commit770a8737d7dd0772078d4711fce186c6b3915b20 (patch)
tree3a3c4f18c8ff3d8064eac877ea7a771b6d3d2365 /extcap
parent1ca260bbb4126423acc2c6c8199ab2831fad995d (diff)
downloadwireshark-770a8737d7dd0772078d4711fce186c6b3915b20.tar.gz
Add ws_hexstrtou{bits} and use ws_hexstrtou32 in androiddump.
Make the reply length unsigned - there's no reason for it to be signed. Change-Id: I5f4d1f027eeddee939547c052220efb89800f4b1 Reviewed-on: https://code.wireshark.org/review/17740 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'extcap')
-rw-r--r--extcap/androiddump.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/extcap/androiddump.c b/extcap/androiddump.c
index b92c1705fc..031325294e 100644
--- a/extcap/androiddump.c
+++ b/extcap/androiddump.c
@@ -439,7 +439,7 @@ static socket_handle_t adb_connect(const char *server_ip, unsigned short *server
static char *adb_send_and_receive(socket_handle_t sock, const char *adb_service,
char *buffer, int buffer_length, gssize *data_length) {
gssize used_buffer_length;
- gint32 length;
+ guint32 length;
gssize result;
char status[4];
char tmp_buffer;
@@ -471,7 +471,11 @@ static char *adb_send_and_receive(socket_handle_t sock, const char *adb_service,
memcpy(status, buffer, 4);
tmp_buffer = buffer[8];
buffer[8] = '\0';
- length = (gssize) g_ascii_strtoll(buffer + 4, NULL, 16);
+ if (!ws_hexstrtou32(buffer + 4, NULL, &length)) {
+ g_warning("Invalid reply length <%s> while reading reply for <%s>", buffer + 4, adb_service);
+
+ return NULL;
+ }
buffer[8] = tmp_buffer;
while (used_buffer_length < length + 8) {