Commit 55045d47 authored by Ishizaki Kou's avatar Ishizaki Kou Committed by Paul Mackerras

[POWERPC] hvcbeat: Fix buffer manipulation

This fixes a potential bug at drivers/char/hvc_beat.c.
 - hvc_put_term_char routine will decrement "rest" variable twice,
   and forget to advance "buf" pointer by "nlen" bytes.
This bug was not hit previously because the output handler in
drivers/char/hvc_console.c splits given output into 16 bytes
at maximum.
Reported-by: default avatarTimur Tabi <timur@freescale.com>
Signed-off-by: default avatarKou Ishizaki <kou.ishizaki@toshiba.co.jp>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 2fe37a6e
...@@ -78,8 +78,8 @@ static int hvc_beat_put_chars(uint32_t vtermno, const char *buf, int cnt) ...@@ -78,8 +78,8 @@ static int hvc_beat_put_chars(uint32_t vtermno, const char *buf, int cnt)
for (rest = cnt; rest > 0; rest -= nlen) { for (rest = cnt; rest > 0; rest -= nlen) {
nlen = (rest > 16) ? 16 : rest; nlen = (rest > 16) ? 16 : rest;
memcpy(kb, buf, nlen); memcpy(kb, buf, nlen);
beat_put_term_char(vtermno, rest, kb[0], kb[1]); beat_put_term_char(vtermno, nlen, kb[0], kb[1]);
rest -= nlen; buf += nlen;
} }
return cnt; return cnt;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment