diff options
author | Guy Harris <guy@alum.mit.edu> | 2016-09-16 10:41:11 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2016-09-16 17:42:03 +0000 |
commit | 770a8737d7dd0772078d4711fce186c6b3915b20 (patch) | |
tree | 3a3c4f18c8ff3d8064eac877ea7a771b6d3d2365 /extcap/androiddump.c | |
parent | 1ca260bbb4126423acc2c6c8199ab2831fad995d (diff) |
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/androiddump.c')
-rw-r--r-- | extcap/androiddump.c | 8 |
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) { |