* [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.