All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] leds/class: Fix string handling
@ 2015-03-30  8:55 Ricardo Ribalda Delgado
  2015-03-30  8:55 ` [PATCH 1/3] leds/class: Use strlcpy instead of strncpy Ricardo Ribalda Delgado
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Ricardo Ribalda Delgado @ 2015-03-30  8:55 UTC (permalink / raw)
  To: Bryan Wu, Richard Purdie, linux-leds, linux-kernel, Geert Uytterhoeven
  Cc: Ricardo Ribalda Delgado

Fix errors reported by Geert Uytterhoeven.

I didn't have the chance to test the changes it in real hardware.


Ricardo Ribalda Delgado (3):
  leds/class: Use strlcpy instead of strncpy
  leds/class: Check snprintf return value
  leds/class: Set naming index as unsigned

 drivers/leds/led-class.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

-- 
2.1.4

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/3] leds/class: Use strlcpy instead of strncpy
  2015-03-30  8:55 [PATCH 0/3] leds/class: Fix string handling Ricardo Ribalda Delgado
@ 2015-03-30  8:55 ` Ricardo Ribalda Delgado
  2015-03-30  8:55 ` [PATCH 2/3] leds/class: Check snprintf return value Ricardo Ribalda Delgado
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 10+ messages in thread
From: Ricardo Ribalda Delgado @ 2015-03-30  8:55 UTC (permalink / raw)
  To: Bryan Wu, Richard Purdie, linux-leds, linux-kernel, Geert Uytterhoeven
  Cc: Ricardo Ribalda Delgado

Strncpy does not guarantee a zero terminated string. Use strlcpy
instead.

Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
---
 drivers/leds/led-class.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
index ebf6dad4f..294d6d6 100644
--- a/drivers/leds/led-class.c
+++ b/drivers/leds/led-class.c
@@ -224,7 +224,7 @@ static int led_classdev_next_name(const char *init_name, char *name,
 {
 	int i = 0;
 
-	strncpy(name, init_name, len);
+	strlcpy(name, init_name, len);
 
 	while (class_find_device(leds_class, NULL, name, match_name))
 		snprintf(name, len, "%s_%d", init_name, ++i);
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/3] leds/class: Check snprintf return value
  2015-03-30  8:55 [PATCH 0/3] leds/class: Fix string handling Ricardo Ribalda Delgado
  2015-03-30  8:55 ` [PATCH 1/3] leds/class: Use strlcpy instead of strncpy Ricardo Ribalda Delgado
@ 2015-03-30  8:55 ` Ricardo Ribalda Delgado
  2015-03-30  8:59   ` Geert Uytterhoeven
  2015-03-30  8:55 ` [PATCH 3/3] leds/class: Set naming index as unsigned Ricardo Ribalda Delgado
  2015-03-30 17:15 ` [PATCH 0/3] leds/class: Fix string handling Bryan Wu
  3 siblings, 1 reply; 10+ messages in thread
From: Ricardo Ribalda Delgado @ 2015-03-30  8:55 UTC (permalink / raw)
  To: Bryan Wu, Richard Purdie, linux-leds, linux-kernel, Geert Uytterhoeven
  Cc: Ricardo Ribalda Delgado

If the final name does not fit the string there is a potential
endless-loop.

Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
---
 drivers/leds/led-class.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
index 294d6d6..2ffe8b1 100644
--- a/drivers/leds/led-class.c
+++ b/drivers/leds/led-class.c
@@ -223,12 +223,17 @@ static int led_classdev_next_name(const char *init_name, char *name,
 				  size_t len)
 {
 	int i = 0;
+	int ret = 0;
 
 	strlcpy(name, init_name, len);
 
-	while (class_find_device(leds_class, NULL, name, match_name))
+	while (class_find_device(leds_class, NULL, name, match_name) &&
+	       (ret < len))
 		snprintf(name, len, "%s_%d", init_name, ++i);
 
+	if (ret >= len)
+		return -ENOMEM;
+
 	return i;
 }
 
@@ -243,6 +248,9 @@ int led_classdev_register(struct device *parent, struct led_classdev *led_cdev)
 	int ret;
 
 	ret = led_classdev_next_name(led_cdev->name, name, sizeof(name));
+	if (ret < 0)
+		return ret;
+
 	led_cdev->dev = device_create_with_groups(leds_class, parent, 0,
 				led_cdev, led_cdev->groups, "%s", name);
 	if (IS_ERR(led_cdev->dev))
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/3] leds/class: Set naming index as unsigned
  2015-03-30  8:55 [PATCH 0/3] leds/class: Fix string handling Ricardo Ribalda Delgado
  2015-03-30  8:55 ` [PATCH 1/3] leds/class: Use strlcpy instead of strncpy Ricardo Ribalda Delgado
  2015-03-30  8:55 ` [PATCH 2/3] leds/class: Check snprintf return value Ricardo Ribalda Delgado
@ 2015-03-30  8:55 ` Ricardo Ribalda Delgado
  2015-03-30  8:59   ` Geert Uytterhoeven
  2015-03-30 17:15 ` [PATCH 0/3] leds/class: Fix string handling Bryan Wu
  3 siblings, 1 reply; 10+ messages in thread
From: Ricardo Ribalda Delgado @ 2015-03-30  8:55 UTC (permalink / raw)
  To: Bryan Wu, Richard Purdie, linux-leds, linux-kernel, Geert Uytterhoeven
  Cc: Ricardo Ribalda Delgado

Avoid weird names (led_-65537) on overflows.

Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
---
 drivers/leds/led-class.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
index 2ffe8b1..2be1ba3 100644
--- a/drivers/leds/led-class.c
+++ b/drivers/leds/led-class.c
@@ -222,7 +222,7 @@ static int match_name(struct device *dev, const void *data)
 static int led_classdev_next_name(const char *init_name, char *name,
 				  size_t len)
 {
-	int i = 0;
+	unsigned int i = 0;
 	int ret = 0;
 
 	strlcpy(name, init_name, len);
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] leds/class: Check snprintf return value
  2015-03-30  8:55 ` [PATCH 2/3] leds/class: Check snprintf return value Ricardo Ribalda Delgado
@ 2015-03-30  8:59   ` Geert Uytterhoeven
  0 siblings, 0 replies; 10+ messages in thread
From: Geert Uytterhoeven @ 2015-03-30  8:59 UTC (permalink / raw)
  To: Ricardo Ribalda Delgado
  Cc: Bryan Wu, Richard Purdie, linux-leds, linux-kernel

On Mon, Mar 30, 2015 at 10:55 AM, Ricardo Ribalda Delgado
<ricardo.ribalda@gmail.com> wrote:
> --- a/drivers/leds/led-class.c
> +++ b/drivers/leds/led-class.c
> @@ -223,12 +223,17 @@ static int led_classdev_next_name(const char *init_name, char *name,
>                                   size_t len)
>  {
>         int i = 0;
> +       int ret = 0;
>
>         strlcpy(name, init_name, len);
>
> -       while (class_find_device(leds_class, NULL, name, match_name))
> +       while (class_find_device(leds_class, NULL, name, match_name) &&
> +              (ret < len))
>                 snprintf(name, len, "%s_%d", init_name, ++i);

Missing "ret = "

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 3/3] leds/class: Set naming index as unsigned
  2015-03-30  8:55 ` [PATCH 3/3] leds/class: Set naming index as unsigned Ricardo Ribalda Delgado
@ 2015-03-30  8:59   ` Geert Uytterhoeven
  0 siblings, 0 replies; 10+ messages in thread
From: Geert Uytterhoeven @ 2015-03-30  8:59 UTC (permalink / raw)
  To: Ricardo Ribalda Delgado
  Cc: Bryan Wu, Richard Purdie, linux-leds, linux-kernel

On Mon, Mar 30, 2015 at 10:55 AM, Ricardo Ribalda Delgado
<ricardo.ribalda@gmail.com> wrote:
> -       int i = 0;
> +       unsigned int i = 0;

That won't help, as you forgot to replace "%d" by "%u" in the snprintf()
call.

>         int ret = 0;

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/3] leds/class: Fix string handling
  2015-03-30  8:55 [PATCH 0/3] leds/class: Fix string handling Ricardo Ribalda Delgado
                   ` (2 preceding siblings ...)
  2015-03-30  8:55 ` [PATCH 3/3] leds/class: Set naming index as unsigned Ricardo Ribalda Delgado
@ 2015-03-30 17:15 ` Bryan Wu
  2015-03-30 17:46   ` Ricardo Ribalda Delgado
  3 siblings, 1 reply; 10+ messages in thread
From: Bryan Wu @ 2015-03-30 17:15 UTC (permalink / raw)
  To: Ricardo Ribalda Delgado
  Cc: Richard Purdie, Linux LED Subsystem, lkml, Geert Uytterhoeven

On Mon, Mar 30, 2015 at 1:55 AM, Ricardo Ribalda Delgado
<ricardo.ribalda@gmail.com> wrote:
> Fix errors reported by Geert Uytterhoeven.
>
> I didn't have the chance to test the changes it in real hardware.
>
>

Thanks, Geert and Ricardo.
Ricardo, do you mind folding your fixing patches with original one
together and send it out again? I will use the new one to replace that
one in my tree, since this patch is not merged into Linus tree yet.

-Bryan


> Ricardo Ribalda Delgado (3):
>   leds/class: Use strlcpy instead of strncpy
>   leds/class: Check snprintf return value
>   leds/class: Set naming index as unsigned
>
>  drivers/leds/led-class.c | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
>
> --
> 2.1.4
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/3] leds/class: Fix string handling
  2015-03-30 17:15 ` [PATCH 0/3] leds/class: Fix string handling Bryan Wu
@ 2015-03-30 17:46   ` Ricardo Ribalda Delgado
  2015-03-30 18:11     ` Bryan Wu
  0 siblings, 1 reply; 10+ messages in thread
From: Ricardo Ribalda Delgado @ 2015-03-30 17:46 UTC (permalink / raw)
  To: Bryan Wu, Sakari Ailus
  Cc: Richard Purdie, Linux LED Subsystem, lkml, Geert Uytterhoeven

Hello Bryan

On Mon, Mar 30, 2015 at 7:15 PM, Bryan Wu <cooloney@gmail.com> wrote:
> Thanks, Geert and Ricardo.
> Ricardo, do you mind folding your fixing patches with original one
> together and send it out again? I will use the new one to replace that
> one in my tree, since this patch is not merged into Linus tree yet.

Not at all, I have also added sakaris patches to my patchset so you
wont have any problem with them.
I dont know what are the conventions with s-o-b in this cases, so I
have left the defaults from git rebase

Thanks!

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/3] leds/class: Fix string handling
  2015-03-30 17:46   ` Ricardo Ribalda Delgado
@ 2015-03-30 18:11     ` Bryan Wu
  0 siblings, 0 replies; 10+ messages in thread
From: Bryan Wu @ 2015-03-30 18:11 UTC (permalink / raw)
  To: Ricardo Ribalda Delgado
  Cc: Sakari Ailus, Richard Purdie, Linux LED Subsystem, lkml,
	Geert Uytterhoeven

On Mon, Mar 30, 2015 at 10:46 AM, Ricardo Ribalda Delgado
<ricardo.ribalda@gmail.com> wrote:
> Hello Bryan
>
> On Mon, Mar 30, 2015 at 7:15 PM, Bryan Wu <cooloney@gmail.com> wrote:
>> Thanks, Geert and Ricardo.
>> Ricardo, do you mind folding your fixing patches with original one
>> together and send it out again? I will use the new one to replace that
>> one in my tree, since this patch is not merged into Linus tree yet.
>
> Not at all, I have also added sakaris patches to my patchset so you
> wont have any problem with them.
> I dont know what are the conventions with s-o-b in this cases, so I
> have left the defaults from git rebase
>
> Thanks!

Good, I will handle that.
Thanks,
-Bryan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 3/3] leds/class: Set naming index as unsigned
@ 2015-03-30  9:09 Ricardo Ribalda Delgado
  0 siblings, 0 replies; 10+ messages in thread
From: Ricardo Ribalda Delgado @ 2015-03-30  9:09 UTC (permalink / raw)
  To: Bryan Wu, Richard Purdie, linux-leds, linux-kernel, Geert Uytterhoeven
  Cc: Ricardo Ribalda Delgado

Avoid weird names (led_-65537) on overflows.

Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
---
 drivers/leds/led-class.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
index 2ffe8b1..2be1ba3 100644
--- a/drivers/leds/led-class.c
+++ b/drivers/leds/led-class.c
@@ -222,7 +222,7 @@ static int match_name(struct device *dev, const void *data)
 static int led_classdev_next_name(const char *init_name, char *name,
 				  size_t len)
 {
-	int i = 0;
+	unsigned int i = 0;
 	int ret = 0;
 
 	strlcpy(name, init_name, len);
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-03-30 18:11 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-30  8:55 [PATCH 0/3] leds/class: Fix string handling Ricardo Ribalda Delgado
2015-03-30  8:55 ` [PATCH 1/3] leds/class: Use strlcpy instead of strncpy Ricardo Ribalda Delgado
2015-03-30  8:55 ` [PATCH 2/3] leds/class: Check snprintf return value Ricardo Ribalda Delgado
2015-03-30  8:59   ` Geert Uytterhoeven
2015-03-30  8:55 ` [PATCH 3/3] leds/class: Set naming index as unsigned Ricardo Ribalda Delgado
2015-03-30  8:59   ` Geert Uytterhoeven
2015-03-30 17:15 ` [PATCH 0/3] leds/class: Fix string handling Bryan Wu
2015-03-30 17:46   ` Ricardo Ribalda Delgado
2015-03-30 18:11     ` Bryan Wu
2015-03-30  9:09 [PATCH 3/3] leds/class: Set naming index as unsigned Ricardo Ribalda Delgado

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.