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:
parent
a92ff8c123
commit
bd4a683505
@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user