| From 38c7b224ce22c25fed04007839edf974bd13439d Mon Sep 17 00:00:00 2001 |
| From: Linus Torvalds <torvalds@linux-foundation.org> |
| Date: Fri, 30 Nov 2018 14:45:01 -0800 |
| Subject: unifdef: use memcpy instead of strncpy |
| |
| From: Linus Torvalds <torvalds@linux-foundation.org> |
| |
| commit 38c7b224ce22c25fed04007839edf974bd13439d upstream. |
| |
| New versions of gcc reasonably warn about the odd pattern of |
| |
| strncpy(p, q, strlen(q)); |
| |
| which really doesn't make sense: the strncpy() ends up being just a slow |
| and odd way to write memcpy() in this case. |
| |
| There was a comment about _why_ the code used strncpy - to avoid the |
| terminating NUL byte, but memcpy does the same and avoids the warning. |
| |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| scripts/unifdef.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/scripts/unifdef.c |
| +++ b/scripts/unifdef.c |
| @@ -395,7 +395,7 @@ usage(void) |
| * When we have processed a group that starts off with a known-false |
| * #if/#elif sequence (which has therefore been deleted) followed by a |
| * #elif that we don't understand and therefore must keep, we edit the |
| - * latter into a #if to keep the nesting correct. We use strncpy() to |
| + * latter into a #if to keep the nesting correct. We use memcpy() to |
| * overwrite the 4 byte token "elif" with "if " without a '\0' byte. |
| * |
| * When we find a true #elif in a group, the following block will |
| @@ -450,7 +450,7 @@ static void Idrop (void) { Fdrop(); ign |
| static void Itrue (void) { Ftrue(); ignoreon(); } |
| static void Ifalse(void) { Ffalse(); ignoreon(); } |
| /* modify this line */ |
| -static void Mpass (void) { strncpy(keyword, "if ", 4); Pelif(); } |
| +static void Mpass (void) { memcpy(keyword, "if ", 4); Pelif(); } |
| static void Mtrue (void) { keywordedit("else"); state(IS_TRUE_MIDDLE); } |
| static void Melif (void) { keywordedit("endif"); state(IS_FALSE_TRAILER); } |
| static void Melse (void) { keywordedit("endif"); state(IS_FALSE_ELSE); } |