DMA Engine development
 help / color / mirror / Atom feed
* [PATCH 1/2] scsi: scsi_debug: fix some bugs in sdebug_error_write()
@ 2023-10-20 14:15 Dan Carpenter
  2023-10-21 10:10 ` Wenchao Hao
  0 siblings, 1 reply; 10+ messages in thread
From: Dan Carpenter @ 2023-10-20 14:15 UTC (permalink / raw)
  To: Wenchao Hao
  Cc: Eugeniy Paltsev, Vinod Koul, James E.J. Bottomley,
	Martin K. Petersen, Douglas Gilbert, dmaengine, linux-scsi,
	kernel-janitors

There are two bug in this code:
1) If count is zero, then it will lead to a NULL dereference.  The
kmalloc() will successfully allocate zero bytes and the test for
"if (buf[0] == '-')" will read beyond the end of the zero size buffer
and Oops.
2) The code does not ensure that the user's string is properly NUL
terminated which could lead to a read overflow.

Fortunately, this is debugfs code and only root can write to it so
the security impact of these bugs is negligable.

Fixes: a9996d722b11 ("scsi: scsi_debug: Add interface to manage error injection for a single device")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
---
 drivers/scsi/scsi_debug.c                      | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c
index 67922e2c4c19..0a4e41d84df8 100644
--- a/drivers/scsi/scsi_debug.c
+++ b/drivers/scsi/scsi_debug.c
@@ -1019,14 +1019,9 @@ static ssize_t sdebug_error_write(struct file *file, const char __user *ubuf,
 	struct sdebug_err_inject *inject;
 	struct scsi_device *sdev = (struct scsi_device *)file->f_inode->i_private;
 
-	buf = kmalloc(count, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	if (copy_from_user(buf, ubuf, count)) {
-		kfree(buf);
-		return -EFAULT;
-	}
+	buf = strndup_user(ubuf, count + 1);
+	if (IS_ERR(buf))
+		return PTR_ERR(buf);
 
 	if (buf[0] == '-')
 		return sdebug_err_remove(sdev, buf, count);
-- 
2.42.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-11-06 13:44 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-20 14:15 [PATCH 1/2] scsi: scsi_debug: fix some bugs in sdebug_error_write() Dan Carpenter
2023-10-21 10:10 ` Wenchao Hao
2023-10-23 13:39   ` Dan Carpenter
2023-10-24 17:09     ` Wenchao Hao
2023-10-25  4:11       ` Dan Carpenter
2023-10-25  6:10         ` Wenchao Hao
2023-10-25  7:07           ` Dan Carpenter
2023-11-03 18:00             ` Wenchao Hao
2023-11-03 18:13               ` Wenchao Hao
2023-11-06 13:44               ` Dan Carpenter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox