2014-10-11 22:34:39

by Rickard Strandqvist

[permalink] [raw]
Subject: [PATCH] char: hw_random: core.c: Changed from using strncpy to strlcpy

Changed from using strncpy to strlcpy to simplify the code

Signed-off-by: Rickard Strandqvist <[email protected]>
---
drivers/char/hw_random/core.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c
index aa30a25..1500cfd 100644
--- a/drivers/char/hw_random/core.c
+++ b/drivers/char/hw_random/core.c
@@ -281,7 +281,6 @@ static ssize_t hwrng_attr_available_show(struct device *dev,
char *buf)
{
int err;
- ssize_t ret = 0;
struct hwrng *rng;

err = mutex_lock_interruptible(&rng_mutex);
@@ -289,16 +288,13 @@ static ssize_t hwrng_attr_available_show(struct device *dev,
return -ERESTARTSYS;
buf[0] = '\0';
list_for_each_entry(rng, &rng_list, list) {
- strncat(buf, rng->name, PAGE_SIZE - ret - 1);
- ret += strlen(rng->name);
- strncat(buf, " ", PAGE_SIZE - ret - 1);
- ret++;
+ strlcat(buf, rng->name, PAGE_SIZE);
+ strlcat(buf, " ", PAGE_SIZE);
}
- strncat(buf, "\n", PAGE_SIZE - ret - 1);
- ret++;
+ strlcat(buf, "\n", PAGE_SIZE);
mutex_unlock(&rng_mutex);

- return ret;
+ return strlen(buf);
}

static DEVICE_ATTR(rng_current, S_IRUGO | S_IWUSR,
--
1.7.10.4


2014-10-12 00:27:47

by Mark D Rustad

[permalink] [raw]
Subject: Re: [PATCH] char: hw_random: core.c: Changed from using strncpy to strlcpy

On Oct 11, 2014, at 3:36 PM, Rickard Strandqvist <[email protected]> wrote:

> Changed from using strncpy to strlcpy to simplify the code

Actually you changed from using strncat to strlcat.

> Signed-off-by: Rickard Strandqvist <[email protected]>
> ---
> drivers/char/hw_random/core.c | 12 ++++--------
> 1 file changed, 4 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c
> index aa30a25..1500cfd 100644
> --- a/drivers/char/hw_random/core.c
> +++ b/drivers/char/hw_random/core.c
> @@ -281,7 +281,6 @@ static ssize_t hwrng_attr_available_show(struct device *dev,
> char *buf)
> {
> int err;
> - ssize_t ret = 0;
> struct hwrng *rng;
>
> err = mutex_lock_interruptible(&rng_mutex);
> @@ -289,16 +288,13 @@ static ssize_t hwrng_attr_available_show(struct device *dev,
> return -ERESTARTSYS;
> buf[0] = '\0';
> list_for_each_entry(rng, &rng_list, list) {
> - strncat(buf, rng->name, PAGE_SIZE - ret - 1);
> - ret += strlen(rng->name);
> - strncat(buf, " ", PAGE_SIZE - ret - 1);
> - ret++;
> + strlcat(buf, rng->name, PAGE_SIZE);
> + strlcat(buf, " ", PAGE_SIZE);
> }
> - strncat(buf, "\n", PAGE_SIZE - ret - 1);
> - ret++;
> + strlcat(buf, "\n", PAGE_SIZE);
> mutex_unlock(&rng_mutex);
>
> - return ret;
> + return strlen(buf);
> }
>
> static DEVICE_ATTR(rng_current, S_IRUGO | S_IWUSR,
> --
> 1.7.10.4

--
Mark Rustad, [email protected]


Attachments:
signature.asc (841.00 B)
Message signed with OpenPGP using GPGMail

2014-10-12 02:11:30

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH] char: hw_random: core.c: Changed from using strncpy to strlcpy

On Sat, Oct 11, 2014 at 05:27:41PM -0700, Mark D Rustad wrote:
> On Oct 11, 2014, at 3:36 PM, Rickard Strandqvist <[email protected]> wrote:
>
> > Changed from using strncpy to strlcpy to simplify the code
>
> Actually you changed from using strncat to strlcat.
>
... and changed the length parameter along the way, making the length check
overall quite worthless and introducing a _real_ problem.

Guenter

> > Signed-off-by: Rickard Strandqvist <[email protected]>
> > ---
> > drivers/char/hw_random/core.c | 12 ++++--------
> > 1 file changed, 4 insertions(+), 8 deletions(-)
> >
> > diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c
> > index aa30a25..1500cfd 100644
> > --- a/drivers/char/hw_random/core.c
> > +++ b/drivers/char/hw_random/core.c
> > @@ -281,7 +281,6 @@ static ssize_t hwrng_attr_available_show(struct device *dev,
> > char *buf)
> > {
> > int err;
> > - ssize_t ret = 0;
> > struct hwrng *rng;
> >
> > err = mutex_lock_interruptible(&rng_mutex);
> > @@ -289,16 +288,13 @@ static ssize_t hwrng_attr_available_show(struct device *dev,
> > return -ERESTARTSYS;
> > buf[0] = '\0';
> > list_for_each_entry(rng, &rng_list, list) {
> > - strncat(buf, rng->name, PAGE_SIZE - ret - 1);
> > - ret += strlen(rng->name);
> > - strncat(buf, " ", PAGE_SIZE - ret - 1);
> > - ret++;
> > + strlcat(buf, rng->name, PAGE_SIZE);
> > + strlcat(buf, " ", PAGE_SIZE);
> > }
> > - strncat(buf, "\n", PAGE_SIZE - ret - 1);
> > - ret++;
> > + strlcat(buf, "\n", PAGE_SIZE);
> > mutex_unlock(&rng_mutex);
> >
> > - return ret;
> > + return strlen(buf);
> > }
> >
> > static DEVICE_ATTR(rng_current, S_IRUGO | S_IWUSR,
> > --
> > 1.7.10.4
>
> --
> Mark Rustad, [email protected]
>

2014-10-12 02:25:25

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH] char: hw_random: core.c: Changed from using strncpy to strlcpy

On Sat, Oct 11, 2014 at 07:11:22PM -0700, Guenter Roeck wrote:
> On Sat, Oct 11, 2014 at 05:27:41PM -0700, Mark D Rustad wrote:
> > On Oct 11, 2014, at 3:36 PM, Rickard Strandqvist <[email protected]> wrote:
> >
> > > Changed from using strncpy to strlcpy to simplify the code
> >
> > Actually you changed from using strncat to strlcat.
> >
> ... and changed the length parameter along the way, making the length check
> overall quite worthless and introducing a _real_ problem.
>
Me talking nonsense; ignore this noise.

Guenter

2014-10-12 10:33:13

by Rickard Strandqvist

[permalink] [raw]
Subject: Re: [PATCH] char: hw_random: core.c: Changed from using strncpy to strlcpy

Hi

Oops, sorry.
New patch on the way!

Kind regards
Rickard Strandqvist


2014-10-12 2:27 GMT+02:00 Mark D Rustad <[email protected]>:
> On Oct 11, 2014, at 3:36 PM, Rickard Strandqvist <[email protected]> wrote:
>
>> Changed from using strncpy to strlcpy to simplify the code
>
> Actually you changed from using strncat to strlcat.
>
>> Signed-off-by: Rickard Strandqvist <[email protected]>
>> ---
>> drivers/char/hw_random/core.c | 12 ++++--------
>> 1 file changed, 4 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c
>> index aa30a25..1500cfd 100644
>> --- a/drivers/char/hw_random/core.c
>> +++ b/drivers/char/hw_random/core.c
>> @@ -281,7 +281,6 @@ static ssize_t hwrng_attr_available_show(struct device *dev,
>> char *buf)
>> {
>> int err;
>> - ssize_t ret = 0;
>> struct hwrng *rng;
>>
>> err = mutex_lock_interruptible(&rng_mutex);
>> @@ -289,16 +288,13 @@ static ssize_t hwrng_attr_available_show(struct device *dev,
>> return -ERESTARTSYS;
>> buf[0] = '\0';
>> list_for_each_entry(rng, &rng_list, list) {
>> - strncat(buf, rng->name, PAGE_SIZE - ret - 1);
>> - ret += strlen(rng->name);
>> - strncat(buf, " ", PAGE_SIZE - ret - 1);
>> - ret++;
>> + strlcat(buf, rng->name, PAGE_SIZE);
>> + strlcat(buf, " ", PAGE_SIZE);
>> }
>> - strncat(buf, "\n", PAGE_SIZE - ret - 1);
>> - ret++;
>> + strlcat(buf, "\n", PAGE_SIZE);
>> mutex_unlock(&rng_mutex);
>>
>> - return ret;
>> + return strlen(buf);
>> }
>>
>> static DEVICE_ATTR(rng_current, S_IRUGO | S_IWUSR,
>> --
>> 1.7.10.4
>
> --
> Mark Rustad, [email protected]
>