diff options
| author | Ha Thach <[email protected]> | 2025-01-25 23:46:06 +0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-01-25 23:46:06 +0700 |
| commit | 37e6f496197e0bc35ca0f71cfef80c19be273ca3 (patch) | |
| tree | 8991bd4e093c98548cd44f8e02ac87cae7f849fe | |
| parent | 597446fbeab9524ba675502c3b6a42d51c0b57ad (diff) | |
| parent | f6f02f189354bf3576372611145f670f29e0ba58 (diff) | |
Merge pull request #2964 from hathach/fix-2939
fix bug introduced by 2939, with correct offset check logic
| -rw-r--r-- | examples/device/cdc_msc/src/msc_disk.c | 8 | ||||
| -rw-r--r-- | examples/device/cdc_msc_freertos/src/msc_disk.c | 9 |
2 files changed, 13 insertions, 4 deletions
diff --git a/examples/device/cdc_msc/src/msc_disk.c b/examples/device/cdc_msc/src/msc_disk.c index c1132bbfc..d325d77fa 100644 --- a/examples/device/cdc_msc/src/msc_disk.c +++ b/examples/device/cdc_msc/src/msc_disk.c @@ -190,10 +190,14 @@ int32_t tud_msc_read10_cb(uint8_t lun, uint32_t lba, uint32_t offset, void* buff (void) lun; // out of ramdisk - if ( lba >= DISK_BLOCK_NUM ) return -1; + if ( lba >= DISK_BLOCK_NUM ) { + return -1; + } // Check for overflow of offset + bufsize - if ( offset + bufsize >= DISK_BLOCK_SIZE ) return -1; + if ( offset + bufsize > DISK_BLOCK_SIZE ) { + return -1; + } uint8_t const* addr = msc_disk[lba] + offset; memcpy(buffer, addr, bufsize); diff --git a/examples/device/cdc_msc_freertos/src/msc_disk.c b/examples/device/cdc_msc_freertos/src/msc_disk.c index e13c24436..d325d77fa 100644 --- a/examples/device/cdc_msc_freertos/src/msc_disk.c +++ b/examples/device/cdc_msc_freertos/src/msc_disk.c @@ -190,9 +190,14 @@ int32_t tud_msc_read10_cb(uint8_t lun, uint32_t lba, uint32_t offset, void* buff (void) lun; // out of ramdisk - if ( lba >= DISK_BLOCK_NUM ) return -1; + if ( lba >= DISK_BLOCK_NUM ) { + return -1; + } + // Check for overflow of offset + bufsize - if ( offset + bufsize >= DISK_BLOCK_SIZE ) return -1; + if ( offset + bufsize > DISK_BLOCK_SIZE ) { + return -1; + } uint8_t const* addr = msc_disk[lba] + offset; memcpy(buffer, addr, bufsize); |
