[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1457469654-17059-8-git-send-email-linux@rasmusvillemoes.dk>
Date: Tue, 8 Mar 2016 21:40:54 +0100
From: Rasmus Villemoes <linux@...musvillemoes.dk>
To: Kees Cook <keescook@...omium.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Duncan Sands <duncan.sands@...e.fr>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc: Rasmus Villemoes <linux@...musvillemoes.dk>,
linux-usb@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [RFC 7/7] USB: usbatm: avoid fragile and inefficient snprintf use
Passing overlapping source and destination is fragile, and in this
case we can even simplify the code and avoid the huge stack buffer by
using the %p extension for printing a small hex dump.
Signed-off-by: Rasmus Villemoes <linux@...musvillemoes.dk>
---
drivers/usb/atm/usbatm.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/drivers/usb/atm/usbatm.c b/drivers/usb/atm/usbatm.c
index db322d9ccb6e..fb47f9883056 100644
--- a/drivers/usb/atm/usbatm.c
+++ b/drivers/usb/atm/usbatm.c
@@ -1331,15 +1331,12 @@ MODULE_VERSION(DRIVER_VERSION);
static int usbatm_print_packet(struct usbatm_data *instance,
const unsigned char *data, int len)
{
- unsigned char buffer[256];
- int i = 0, j = 0;
+ int i, j;
for (i = 0; i < len;) {
- buffer[0] = '\0';
- sprintf(buffer, "%.3d :", i);
- for (j = 0; (j < 16) && (i < len); j++, i++)
- sprintf(buffer, "%s %2.2x", buffer, data[i]);
- dev_dbg(&instance->usb_intf->dev, "%s", buffer);
+ j = min(16, len-i);
+ dev_dbg(&instance->usb_intf->dev, "%.3d : %*ph", i, j, data + i);
+ i += j;
}
return i;
}
--
2.1.4
Powered by blists - more mailing lists