https://git.reactos.org/?p=reactos.git;a=commitdiff;h=606e996e1fcfe9f358a1e77f6da71bfbd845b6c6
commit 606e996e1fcfe9f358a1e77f6da71bfbd845b6c6 Author: Max Korostil <mrmk...@yandex.ru> AuthorDate: Sun Mar 2 21:07:34 2025 +0300 Commit: GitHub <nore...@github.com> CommitDate: Sun Mar 2 19:07:34 2025 +0100 [UNIATA] Fix memory corruption if SCSIOP_SERVICE_ACTION16 processed. (#7717) Reason: the size of `READ_CAPACITY16_DATA` struct in UniATA driver and ReactOS/Windows SDK were not equal. - In UniATA driver: `sizeof(READ_CAPACITY16_DATA) == 33` (wrong); - In ReactOS/Windows SDK: `sizeof(READ_CAPACITY16_DATA) == 32` (correct). CORE-19696 --- drivers/storage/ide/uniata/scsi.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/storage/ide/uniata/scsi.h b/drivers/storage/ide/uniata/scsi.h index 9d85cf14d59..9a599114da3 100644 --- a/drivers/storage/ide/uniata/scsi.h +++ b/drivers/storage/ide/uniata/scsi.h @@ -1433,7 +1433,13 @@ typedef struct _READ_CAPACITY16_DATA { UCHAR Prot_EN:1; UCHAR RTO_EN:1; UCHAR Reserved:6; +#ifdef __REACTOS__ + /* In ReactOS SDK sizeof(READ_CAPACITY16_DATA) == 32. + * Fixes CORE-19696 memory corruption on SCSIOP_SERVICE_ACTION16. */ + UCHAR Reserved1[19]; +#else UCHAR Reserved1[20]; +#endif } READ_CAPACITY16_DATA, *PREAD_CAPACITY16_DATA; // CD ROM Read Table Of Contents (TOC) structures