[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