From fcde57a426c897aba90a7183429dca43ece7c62d Mon Sep 17 00:00:00 2001 From: thorpej Date: Fri, 13 Sep 1996 00:35:59 +0000 Subject: [PATCH] For ioctl commands which may change the device's state, ensure that the caller has the device open for writing. --- sys/dev/scsipi/scsipi_ioctl.c | 13 ++++++++++++- sys/scsi/scsi_ioctl.c | 13 ++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/sys/dev/scsipi/scsipi_ioctl.c b/sys/dev/scsipi/scsipi_ioctl.c index b3f6c56d8292..06ad2198f4aa 100644 --- a/sys/dev/scsipi/scsipi_ioctl.c +++ b/sys/dev/scsipi/scsipi_ioctl.c @@ -1,4 +1,4 @@ -/* $NetBSD: scsipi_ioctl.c,v 1.20 1996/02/14 21:47:22 christos Exp $ */ +/* $NetBSD: scsipi_ioctl.c,v 1.21 1996/09/13 00:35:59 thorpej Exp $ */ /* * Copyright (c) 1994 Charles Hannum. All rights reserved. @@ -44,6 +44,7 @@ #include #include #include +#include #include #include @@ -287,6 +288,16 @@ scsi_do_ioctl(sc_link, dev, cmd, addr, flag, p) SC_DEBUG(sc_link, SDEV_DB2, ("scsi_do_ioctl(0x%lx)\n", cmd)); + /* Check for the safe-ness of this request. */ + switch (cmd) { + case SCIOCIDENTIFY: + break; + + default: + if ((flag & FWRITE) == 0) + return EBADF; + } + switch(cmd) { case SCIOCCOMMAND: { scsireq_t *screq = (scsireq_t *)addr; diff --git a/sys/scsi/scsi_ioctl.c b/sys/scsi/scsi_ioctl.c index 0d77b6620e85..41bb89e1d19c 100644 --- a/sys/scsi/scsi_ioctl.c +++ b/sys/scsi/scsi_ioctl.c @@ -1,4 +1,4 @@ -/* $NetBSD: scsi_ioctl.c,v 1.20 1996/02/14 21:47:22 christos Exp $ */ +/* $NetBSD: scsi_ioctl.c,v 1.21 1996/09/13 00:35:59 thorpej Exp $ */ /* * Copyright (c) 1994 Charles Hannum. All rights reserved. @@ -44,6 +44,7 @@ #include #include #include +#include #include #include @@ -287,6 +288,16 @@ scsi_do_ioctl(sc_link, dev, cmd, addr, flag, p) SC_DEBUG(sc_link, SDEV_DB2, ("scsi_do_ioctl(0x%lx)\n", cmd)); + /* Check for the safe-ness of this request. */ + switch (cmd) { + case SCIOCIDENTIFY: + break; + + default: + if ((flag & FWRITE) == 0) + return EBADF; + } + switch(cmd) { case SCIOCCOMMAND: { scsireq_t *screq = (scsireq_t *)addr;