Re: [PATCH] strncpy() will not \0 terminate result

From: Tony Finch
Date: Thu Jan 13 2011 - 19:46:25 EST


This patch is incorrect. The strncpy is replacing "else" with "if " so needs to copy exactly 4 bytes.

Tony.
--
f.anthony.n.finch <dot@xxxxxxxx> http://dotat.at/

On 13 Jan 2011, at 22:35, Jesper Juhl <jj@xxxxxxxxxxxxx> wrote:

> Hi,
>
> Mpass() in scripts/unifdef.c has this code:
> strncpy(keyword, "if ", 4);
> this will fail to \0 terminate the destination.
> Following patch should fix that up.
>
> Signed-off-by: Jesper Juhl <jj@xxxxxxxxxxxxx>
> ---
> unifdef.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/unifdef.c b/scripts/unifdef.c
> index 44d3978..d579249 100644
> --- a/scripts/unifdef.c
> +++ b/scripts/unifdef.c
> @@ -376,7 +376,7 @@ static void Idrop (void) { Fdrop(); ignoreon(); }
> static void Itrue (void) { Ftrue(); ignoreon(); }
> static void Ifalse(void) { Ffalse(); ignoreon(); }
> /* edit this line */
> -static void Mpass (void) { strncpy(keyword, "if ", 4); Pelif(); }
> +static void Mpass (void) { strncpy(keyword, "if ", 5); Pelif(); }
> static void Mtrue (void) { keywordedit("else\n"); state(IS_TRUE_MIDDLE); }
> static void Melif (void) { keywordedit("endif\n"); state(IS_FALSE_TRAILER); }
> static void Melse (void) { keywordedit("endif\n"); state(IS_FALSE_ELSE); }
>
> --
> Jesper Juhl <jj@xxxxxxxxxxxxx> http://www.chaosbits.net/
> Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
> Plain text mails only, please.
>
--
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/