diff options
author | Roel Kluin <roel.kluin@gmail.com> | 2009-12-11 09:43:15 -0500 |
---|---|---|
committer | Jason Wessel <jason.wessel@windriver.com> | 2009-12-11 09:43:15 -0500 |
commit | b4f1b67be99d6eda8f2f252460905858ace871ef (patch) | |
tree | 192b55a4f009716d7a4e82ac061c9b8e89ffb377 /drivers/misc/kgdbts.c | |
parent | 84667d4849b0e0a939a76f9f62d45fa3b4d59692 (diff) |
kgdbts: Read buffer overflow
Prevent write to put_buf[BUFMAX] in kgdb test suite.
If put_buf_cnt was BUFMAX - 1 at the earlier test,
`\0' is written to put_buf[BUFMAX].
Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Diffstat (limited to 'drivers/misc/kgdbts.c')
-rw-r--r-- | drivers/misc/kgdbts.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c index e4ff50b95a5e..2ab04923d70f 100644 --- a/drivers/misc/kgdbts.c +++ b/drivers/misc/kgdbts.c | |||
@@ -712,6 +712,12 @@ static int run_simple_test(int is_get_char, int chr) | |||
712 | 712 | ||
713 | /* End of packet == #XX so look for the '#' */ | 713 | /* End of packet == #XX so look for the '#' */ |
714 | if (put_buf_cnt > 3 && put_buf[put_buf_cnt - 3] == '#') { | 714 | if (put_buf_cnt > 3 && put_buf[put_buf_cnt - 3] == '#') { |
715 | if (put_buf_cnt >= BUFMAX) { | ||
716 | eprintk("kgdbts: ERROR: put buffer overflow on" | ||
717 | " '%s' line %i\n", ts.name, ts.idx); | ||
718 | put_buf_cnt = 0; | ||
719 | return 0; | ||
720 | } | ||
715 | put_buf[put_buf_cnt] = '\0'; | 721 | put_buf[put_buf_cnt] = '\0'; |
716 | v2printk("put%i: %s\n", ts.idx, put_buf); | 722 | v2printk("put%i: %s\n", ts.idx, put_buf); |
717 | /* Trigger check here */ | 723 | /* Trigger check here */ |