diff options
author | Chen Gang <gang.chen@asianux.com> | 2013-05-29 06:51:28 -0400 |
---|---|---|
committer | Matt Turner <mattst88@gmail.com> | 2013-07-19 16:54:14 -0400 |
commit | 00ee03092a6e4b1d0ddc6b861ebb9ed8d13cc29b (patch) | |
tree | 1819f32f291cb321a3123d5c6b8bad44b819f4e9 /arch/alpha/kernel | |
parent | 29b7a47a9df2534ed62c4783dcf76153ceb76a73 (diff) |
alpha: kernel: using memcpy() instead of strcpy()
When sending message in send_secondary_console_msg(), the length is not
include the NUL byte, and also not copy NUL to 'ipc_buffer'.
When receive message in recv_secondary_console_msg(), the 'cnt' also
excludes NUL.
So when get string from ipc_buffer, it may not be NUL terminated.
Then use memcpy() instead of strcpy(), and set last byte NUL.
Reviewed-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Chen Gang <gang.chen@asianux.com>
Diffstat (limited to 'arch/alpha/kernel')
-rw-r--r-- | arch/alpha/kernel/smp.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/alpha/kernel/smp.c b/arch/alpha/kernel/smp.c index 53b18a620e1c..4bc3c414d075 100644 --- a/arch/alpha/kernel/smp.c +++ b/arch/alpha/kernel/smp.c | |||
@@ -266,7 +266,8 @@ recv_secondary_console_msg(void) | |||
266 | else { | 266 | else { |
267 | cp1 = (char *) &cpu->ipc_buffer[11]; | 267 | cp1 = (char *) &cpu->ipc_buffer[11]; |
268 | cp2 = buf; | 268 | cp2 = buf; |
269 | strcpy(cp2, cp1); | 269 | memcpy(cp2, cp1, cnt); |
270 | cp2[cnt] = '\0'; | ||
270 | 271 | ||
271 | while ((cp2 = strchr(cp2, '\r')) != 0) { | 272 | while ((cp2 = strchr(cp2, '\r')) != 0) { |
272 | *cp2 = ' '; | 273 | *cp2 = ' '; |