Files
linux/include/uapi/linux
Eric Biggers cd7a265d77 isdn/capi: check message length in capi_write()
[ Upstream commit fe163e534e ]

syzbot reported:

    BUG: KMSAN: uninit-value in capi_write+0x791/0xa90 drivers/isdn/capi/capi.c:700
    CPU: 0 PID: 10025 Comm: syz-executor379 Not tainted 4.20.0-rc7+ #2
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
      __dump_stack lib/dump_stack.c:77 [inline]
      dump_stack+0x173/0x1d0 lib/dump_stack.c:113
      kmsan_report+0x12e/0x2a0 mm/kmsan/kmsan.c:613
      __msan_warning+0x82/0xf0 mm/kmsan/kmsan_instr.c:313
      capi_write+0x791/0xa90 drivers/isdn/capi/capi.c:700
      do_loop_readv_writev fs/read_write.c:703 [inline]
      do_iter_write+0x83e/0xd80 fs/read_write.c:961
      vfs_writev fs/read_write.c:1004 [inline]
      do_writev+0x397/0x840 fs/read_write.c:1039
      __do_sys_writev fs/read_write.c:1112 [inline]
      __se_sys_writev+0x9b/0xb0 fs/read_write.c:1109
      __x64_sys_writev+0x4a/0x70 fs/read_write.c:1109
      do_syscall_64+0xbc/0xf0 arch/x86/entry/common.c:291
      entry_SYSCALL_64_after_hwframe+0x63/0xe7
    [...]

The problem is that capi_write() is reading past the end of the message.
Fix it by checking the message's length in the needed places.

Reported-and-tested-by: syzbot+0849c524d9c634f5ae66@syzkaller.appspotmail.com
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-05-15 14:29:25 +09:00
..
2014-09-23 23:15:46 -07:00
2015-04-21 16:16:02 -04:00
2016-12-05 19:43:02 -05:00
2018-03-29 11:32:39 +02:00
2013-04-26 16:08:16 +10:00
2017-12-05 11:24:34 +01:00
2014-07-01 10:48:05 -06:00
2016-10-03 18:52:14 +02:00
2014-03-20 14:55:18 +01:00
2015-08-25 14:41:50 -05:00
2014-11-19 14:48:02 -06:00
2012-10-16 18:49:15 -07:00
2018-03-22 09:17:38 +01:00
2018-04-12 09:54:41 -07:00
2015-04-12 21:25:13 -04:00
2015-12-14 12:19:37 -06:00
2013-12-11 12:57:55 -08:00
2014-12-02 13:52:53 -07:00
2016-06-27 16:31:25 +01:00
2016-04-12 19:54:58 +01:00
2016-04-25 15:09:10 -04:00
2016-01-12 08:21:18 -07:00
2017-01-31 10:47:24 -08:00
2015-08-03 17:30:00 -07:00
2014-08-08 15:57:31 -07:00
2015-07-21 10:39:05 -07:00
2015-11-23 15:06:38 -05:00
2015-01-20 13:51:06 +01:00
2014-12-13 12:42:52 -08:00
2015-05-05 13:40:44 -06:00
2015-04-23 15:16:14 -04:00
2015-07-20 14:58:46 -04:00
2016-05-17 17:14:21 -06:00
2012-11-16 10:15:35 -08:00
2016-09-27 21:52:00 -04:00
2016-09-27 21:52:00 -04:00
2018-09-14 00:40:58 -07:00
2016-05-08 23:46:14 -04:00
2016-04-26 12:00:48 -04:00
2018-04-24 09:34:16 +02:00
2016-04-04 22:11:20 -04:00
2018-02-21 15:40:42 +00:00
2014-12-09 14:10:41 +08:00
2013-03-22 16:19:59 -07:00
2015-06-11 23:37:37 +02:00
2015-12-18 17:48:51 -08:00
2015-10-27 18:55:31 -07:00
2016-05-20 17:58:30 -07:00
2016-08-02 16:53:54 +03:00
2015-03-29 12:13:52 +10:30
2014-12-09 12:05:24 +02:00
2016-04-30 09:26:55 -07:00