usb-redir: fix stack overflow in usbredir_log_data

Don't reinvent a broken wheel, just use the hexdump function we have.

Impact: low, broken code doesn't run unless you have debug logging
enabled.

Reported-by: 李强 <liqiang6-s@360.cn>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-id: 20170509110128.27261-1-kraxel@redhat.com
This commit is contained in:
Gerd Hoffmann 2017-05-09 13:01:28 +02:00
parent a92ff8c123
commit bd4a683505

View File

@ -229,21 +229,10 @@ static void usbredir_log(void *priv, int level, const char *msg)
static void usbredir_log_data(USBRedirDevice *dev, const char *desc, static void usbredir_log_data(USBRedirDevice *dev, const char *desc,
const uint8_t *data, int len) const uint8_t *data, int len)
{ {
int i, j, n;
if (dev->debug < usbredirparser_debug_data) { if (dev->debug < usbredirparser_debug_data) {
return; return;
} }
qemu_hexdump((char *)data, stderr, desc, len);
for (i = 0; i < len; i += j) {
char buf[128];
n = sprintf(buf, "%s", desc);
for (j = 0; j < 8 && i + j < len; j++) {
n += sprintf(buf + n, " %02X", data[i + j]);
}
error_report("%s", buf);
}
} }
/* /*