[syslinux:master] diskio: check early for an impossible LBA value for CHS requests
syslinux-bot for H. Peter Anvin
hpa at linux.intel.com
Fri Jul 16 16:30:04 PDT 2010
Commit-ID: 055f763ca8c0eb69724cf5c1e5cb9511dce724f9
Gitweb: http://syslinux.zytor.com/commit/055f763ca8c0eb69724cf5c1e5cb9511dce724f9
Author: H. Peter Anvin <hpa at linux.intel.com>
AuthorDate: Fri, 16 Jul 2010 16:25:53 -0700
Committer: H. Peter Anvin <hpa at linux.intel.com>
CommitDate: Fri, 16 Jul 2010 16:25:53 -0700
diskio: check early for an impossible LBA value for CHS requests
Make sure we don't end up trying to do a CHS request for a truly
absurd value, that could possibly be misconverted.
Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>
---
core/fs/diskio.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/core/fs/diskio.c b/core/fs/diskio.c
index 822314c..cf9bf49 100644
--- a/core/fs/diskio.c
+++ b/core/fs/diskio.c
@@ -25,6 +25,9 @@ static int chs_rdwr_sectors(struct disk *disk, void *buf,
int retry;
uint32_t maxtransfer = disk->maxtransfer;
+ if (lba + disk->part_start >= 1024*256*63)
+ return 0; /* Impossible CHS request */
+
memset(&ireg, 0, sizeof ireg);
ireg.eax.b[1] = 0x02 + is_write;
More information about the Syslinux-commits
mailing list