From: Ben Gras Date: Tue, 9 Aug 2005 12:18:15 +0000 (+0000) Subject: Moved open-ATAPI-as-RW check to before open-first-time check.. otherwise X-Git-Tag: v3.1.0~392 X-Git-Url: http://zhaoyanbai.com/repos/Bv9ARM.ch07.html?a=commitdiff_plain;h=f3500010b77e3f8979d65fcbb02bb9b30011ebb1;p=minix.git Moved open-ATAPI-as-RW check to before open-first-time check.. otherwise you can open an ATAPI device as RW if it's already opened for read. --- diff --git a/drivers/at_wini/at_wini.c b/drivers/at_wini/at_wini.c index 0de6f7c39..f9e35bcec 100644 --- a/drivers/at_wini/at_wini.c +++ b/drivers/at_wini/at_wini.c @@ -364,6 +364,14 @@ message *m_ptr; #endif } +#if ENABLE_ATAPI + if ((wn->state & ATAPI) && (m_ptr->COUNT & W_BIT)) + return(EACCES); +#endif + + /* If it's not an ATAPI device, then don't open with RO_BIT. */ + if (!(wn->state & ATAPI) && (m_ptr->COUNT & RO_BIT)) return EACCES; + /* Partition the drive if it's being opened for the first time, * or being opened after being closed. */ @@ -371,13 +379,9 @@ message *m_ptr; #if ENABLE_ATAPI if (wn->state & ATAPI) { int r; - - if (m_ptr->COUNT & W_BIT) return(EACCES); if ((r = atapi_open()) != OK) return(r); } #endif - /* If it's not an ATAPI device, then don't open read-only. */ - if (!(wn->state & ATAPI) && (m_ptr->COUNT & RO_BIT)) return EACCES; /* Partition the disk. */ partition(&w_dtab, w_drive * DEV_PER_DRIVE, P_PRIMARY, wn->state & ATAPI);