Re: [PATCH] locomo.c: convert strncpy(x, y, sizeof(x)) to strlcpy
- From: Roel Kluin <12o3l@xxxxxxxxxx>
- Date: Fri, 07 Mar 2008 00:35:56 +0100
H. Peter Anvin wrote:
Roel Kluin wrote:
This patch was not yet tested. Please confirm it's right.
---
strncpy does not append '\0' if the length of the source string equals
the size parameter, strlcpy does.
Are you sure it's safe to not zero out the contents of the buffer (no
information leak)?
-hpa
As I understand it, please correct me if I'm wrong:
Of the three variants: strcpy, strncpy and strlcpy.
- strcpy does not append \0 (unless the source string already contained it)
- strncpy appends \0's if the source string is smaller than the size
parameter (for all remaining characters)
- strlcpy always appends a single \0 (unless size parameter was 0)
char *strcpy(char *dest, const char *src);
char *strncpy(char *dest, const char *src, size_t n);
size_t strlcpy(char *dst, const char *src, size_t n);
In the original code strncpy was used and the size parameter was equal
to the source string size:
strncpy(dev->dev.bus_id, info->name, sizeof(dev->dev.bus_id));
Since this the size was equal there was no \0 termination. To \0
terminate using strncpy we could write:
strncpy(dev->dev.bus_id, info->name, sizeof(dev->dev.bus_id) - 1);
dev->dev.bus_id[sizeof(dev->dev.bus_id) - 1] = '\0';
or using strlcpy, which does the same thing:
strlcpy(dev->dev.bus_id, info->name, sizeof(dev->dev.bus_id));
Roel
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- Follow-Ups:
- Re: [PATCH] locomo.c: convert strncpy(x, y, sizeof(x)) to strlcpy
- From: David Wagner
- Re: [PATCH] locomo.c: convert strncpy(x, y, sizeof(x)) to strlcpy
- References:
- [PATCH] locomo.c: convert strncpy(x, y, sizeof(x)) to strlcpy
- From: Roel Kluin
- Re: [PATCH] locomo.c: convert strncpy(x, y, sizeof(x)) to strlcpy
- From: H. Peter Anvin
- [PATCH] locomo.c: convert strncpy(x, y, sizeof(x)) to strlcpy
- Prev by Date: Re: [PATCH 1/5] generic __remove_pages() support
- Next by Date: Re: Treason uncloaked spams syslog with latest git
- Previous by thread: Re: [PATCH] locomo.c: convert strncpy(x, y, sizeof(x)) to strlcpy
- Next by thread: Re: [PATCH] locomo.c: convert strncpy(x, y, sizeof(x)) to strlcpy
- Index(es):
Relevant Pages
|