Re: [RFC 0/7] eliminate snprintf with overlapping src and dst

From: Kees Cook
Date: Tue Mar 08 2016 - 18:13:28 EST


On Tue, Mar 8, 2016 at 12:40 PM, Rasmus Villemoes
<linux@xxxxxxxxxxxxxxxxxx> wrote:
> Doing snprintf(buf, len, "%s...", buf, ...) for appending to a buffer
> currently works, but it is somewhat fragile, and any other overlap
> between source and destination buffers would be a definite bug. This
> is an attempt at eliminating the relatively few occurences of this
> pattern in the kernel.
>
> I could use another set of eyes on all of these. The drm/amdkfd patch
> is unfortunately rather large, but I couldn't find a better way to do
> this.

Best alternative would be to have the macros just use side-effects to
bump "ret" without passing it in, etc, but that's ugly/fragile, so I'd
agree: what you have is best.

Consider all the changes:

Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx>

-Kees

>
> Rasmus Villemoes (7):
> drm/amdkfd: avoid fragile and inefficient snprintf use
> Input: joystick - avoid fragile snprintf use
> leds: avoid fragile sprintf use
> drivers/media/pci/zoran: avoid fragile snprintf use
> wlcore: avoid fragile snprintf use
> [media] ati_remote: avoid fragile snprintf use
> USB: usbatm: avoid fragile and inefficient snprintf use
>
> drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 168 +++++++++++++++---------------
> drivers/input/joystick/analog.c | 8 +-
> drivers/leds/led-class-flash.c | 3 +-
> drivers/media/pci/zoran/videocodec.c | 5 +-
> drivers/media/rc/ati_remote.c | 11 +-
> drivers/net/wireless/ti/wlcore/boot.c | 12 ++-
> drivers/usb/atm/usbatm.c | 11 +-
> 7 files changed, 110 insertions(+), 108 deletions(-)
>
> --
> 2.1.4
>



--
Kees Cook
Chrome OS & Brillo Security