All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Machek <pavel@ucw.cz>
To: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Jacek Anaszewski" <jacek.anaszewski@gmail.com>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-leds@vger.kernel.org
Subject: Re: [PATCH 1/4] leds: netdev trigger: use memcpy in device_name_store
Date: Thu, 14 Mar 2019 11:14:19 +0100	[thread overview]
Message-ID: <20190314101419.GA14455@amd> (raw)
In-Reply-To: <20190313202615.22883-2-linux@rasmusvillemoes.dk>

[-- Attachment #1: Type: text/plain, Size: 1800 bytes --]

Hi!

> If userspace doesn't end the input with a newline (which can easily
> happen if the write happens from a C program that does write(fd,
> iface, strlen(iface))), we may end up including garbage from a
> previous, longer value in the device_name. For example
> 
> # cat device_name
> 
> # printf 'eth12' > device_name
> # cat device_name
> eth12
> # printf 'eth3' > device_name
> # cat device_name
> eth32
> 
> I highly doubt anybody is relying on this behaviour, so switch to
> simply copying the bytes (we've already checked that size is <
> IFNAMSIZ) and unconditionally zero-terminate it; of course, we also
> still have to strip a trailing newline.

  char device_name[IFNAMSIZ];

Ok, good catch reporting the bug, but are you sure the fix is right?

AFAICT the design is that device_name does _not_ have to be zero
terminated, and your fix incorrectly limits the size of device_name.

								Pavel
								
> index 3dd3ed46d473..ddc2b90ad7ec 100644
> --- a/drivers/leds/trigger/ledtrig-netdev.c
> +++ b/drivers/leds/trigger/ledtrig-netdev.c
> @@ -122,7 +122,8 @@ static ssize_t device_name_store(struct device *dev,
>  		trigger_data->net_dev = NULL;
>  	}
>  
> -	strncpy(trigger_data->device_name, buf, size);
> +	memcpy(trigger_data->device_name, buf, size);
> +	trigger_data->device_name[size] = '\0';

I'd do = 0 for consistency with code below.

I believe the strncpy() is right to use here, but code should be
modified so that zero-termination is not required.

>  	if (size > 0 && trigger_data->device_name[size - 1] == '\n')
>  		trigger_data->device_name[size - 1] = 0;
>  
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

  parent reply	other threads:[~2019-03-14 10:14 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-11 10:59 replacement for CAN_LEDS Rasmus Villemoes
2019-03-11 14:42 ` Pavel Machek
2019-03-13 20:26   ` [PATCH 0/4] leds: netdev trigger: allow setting initial values in device tree Rasmus Villemoes
2019-03-13 20:26     ` [PATCH 1/4] leds: netdev trigger: use memcpy in device_name_store Rasmus Villemoes
2019-03-14  9:29       ` Uwe Kleine-König
2019-03-14  9:57         ` Rasmus Villemoes
2019-03-14 10:04           ` Uwe Kleine-König
2019-03-14 10:14       ` Pavel Machek [this message]
2019-03-14 10:54         ` Rasmus Villemoes
2019-03-14 12:16           ` Pavel Machek
2019-03-13 20:26     ` [PATCH 2/4] leds: netdev trigger: factor out middle part of device_name_store Rasmus Villemoes
2019-03-14  9:31       ` Uwe Kleine-König
2019-03-14  9:57         ` Rasmus Villemoes
2019-03-14 10:15         ` Pavel Machek
2019-03-14 10:20           ` Uwe Kleine-König
2019-03-13 20:26     ` [PATCH 3/4] leds: netdev trigger: add documentation to leds/common.txt Rasmus Villemoes
2019-03-13 20:26     ` [PATCH 4/4] leds: netdev trigger: allow setting initial values in device tree Rasmus Villemoes
2019-03-14  9:36       ` Uwe Kleine-König
2019-03-14 10:28         ` Rasmus Villemoes
2019-03-14 10:29       ` Pavel Machek
2019-03-14 11:26         ` Rasmus Villemoes
2019-03-14 12:00           ` Pavel Machek
2019-03-14 13:19             ` Rasmus Villemoes
2019-03-17 19:11               ` Pavel Machek
2019-03-24 20:39                 ` Rasmus Villemoes
2019-03-14 10:32       ` Jacek Anaszewski
2019-03-14 14:06     ` [PATCH v2 0/6] " Rasmus Villemoes
2019-03-14 14:06       ` [PATCH v2 1/6] leds: netdev trigger: use memcpy in device_name_store Rasmus Villemoes
2019-03-18 11:20         ` Pavel Machek
2019-03-26 19:53         ` Jacek Anaszewski
2019-03-27 15:26           ` Rasmus Villemoes
2019-03-27 21:20             ` Jacek Anaszewski
2019-03-27 21:31               ` Rasmus Villemoes
2019-03-27 21:45                 ` Jacek Anaszewski
2019-03-14 14:06       ` [PATCH v2 2/6] leds: netdev trigger: factor out middle part of device_name_store Rasmus Villemoes
2019-03-18 11:24         ` Pavel Machek
2019-03-14 14:06       ` [PATCH v2 3/6] leds: netdev trigger: move newline handling back to device_name_store Rasmus Villemoes
2019-03-18 11:25         ` Pavel Machek
2019-03-14 14:06       ` [PATCH v2 4/6] leds: netdev trigger: move name length checking to netdev_trig_set_device Rasmus Villemoes
2019-03-18 11:26         ` Pavel Machek
2019-03-14 14:06       ` [PATCH v2 5/6] leds: netdev trigger: add documentation to leds/common.txt Rasmus Villemoes
2019-03-14 14:06       ` [PATCH v2 6/6] leds: netdev trigger: allow setting initial values in device tree Rasmus Villemoes
2019-03-14 14:24         ` Jacek Anaszewski
2019-03-14 15:05           ` Rasmus Villemoes
2019-03-14 15:36             ` Jacek Anaszewski
2019-03-18 11:54         ` Pavel Machek
2019-03-28 16:28         ` Rob Herring

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190314101419.GA14455@amd \
    --to=pavel@ucw.cz \
    --cc=jacek.anaszewski@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    --cc=u.kleine-koenig@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.