diff options
author | Dan Carpenter <dan.carpenter@oracle.com> | 2014-04-08 09:23:09 (GMT) |
---|---|---|
committer | Jiri Slaby <jslaby@suse.cz> | 2014-04-18 09:07:19 (GMT) |
commit | f11c98eec721c6c00d1c56289ebf35971037b967 (patch) | |
tree | 4516f3bf2d6d244cc523469cd96766633b740a2b /REPORTING-BUGS | |
parent | 2d6c1221476d05771f8b10f6ad1575fd068ab5e2 (diff) | |
download | linux-fsl-qoriq-f11c98eec721c6c00d1c56289ebf35971037b967.tar.xz |
isdnloop: several buffer overflows
[ Upstream commit 7563487cbf865284dcd35e9ef5a95380da046737 ]
There are three buffer overflows addressed in this patch.
1) In isdnloop_fake_err() we add an 'E' to a 60 character string and
then copy it into a 60 character buffer. I have made the destination
buffer 64 characters and I'm changed the sprintf() to a snprintf().
2) In isdnloop_parse_cmd(), p points to a 6 characters into a 60
character buffer so we have 54 characters. The ->eazlist[] is 11
characters long. I have modified the code to return if the source
buffer is too long.
3) In isdnloop_command() the cbuf[] array was 60 characters long but the
max length of the string then can be up to 79 characters. I made the
cbuf array 80 characters long and changed the sprintf() to snprintf().
I also removed the temporary "dial" buffer and changed it to use "p"
directly.
Unfortunately, we pass the "cbuf" string from isdnloop_command() to
isdnloop_writecmd() which truncates anything over 60 characters to make
it fit in card->omsg[]. (It can accept values up to 255 characters so
long as there is a '\n' character every 60 characters). For now I have
just fixed the memory corruption bug and left the other problems in this
driver alone.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Diffstat (limited to 'REPORTING-BUGS')
0 files changed, 0 insertions, 0 deletions