From c6ef920182ecba8bd67ea88223be48685b2ca30d Mon Sep 17 00:00:00 2001 From: Michal Soltys Date: Wed, 13 Oct 2010 23:32:38 +0200 Subject: [PATCH] com32/chain: remove remains of SECTOR All chain related code no longer depends on hardcoded sector size. Signed-off-by: Michal Soltys --- com32/chain/chain.c | 8 ++++++-- com32/chain/options.c | 4 ---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/com32/chain/chain.c b/com32/chain/chain.c index 1236b38..3dc6d91 100644 --- a/com32/chain/chain.c +++ b/com32/chain/chain.c @@ -556,9 +556,13 @@ int main(int argc, char *argv[]) /* Load the sector */ if (opt.sect) { - sdat.size = SECTOR; sdat.base = (opt.sseg << 4) + opt.soff; + sdat.size = iter->di.bps; + if (sdat.base + sdat.size - 1 > ADDRMAX) { + error("The sector cannot be loaded at such high address.\n"); + goto bail; + } if (opt.file && opt.maps && overlap(&fdat, &sdat)) { error("WARNING: The sector won't be loaded, as it would conflict with the boot file.\n"); opt.sect = false; @@ -568,7 +572,7 @@ int main(int argc, char *argv[]) goto bail; } if (opt.save) { - if (!(sbck = malloc(SECTOR))) { + if (!(sbck = malloc(sdat.size))) { error("Couldn't allocate cmp-buf for option 'save'.\n"); goto bail; } diff --git a/com32/chain/options.c b/com32/chain/options.c index 53810da..37b9f11 100644 --- a/com32/chain/options.c +++ b/com32/chain/options.c @@ -252,10 +252,6 @@ int parse_args(int argc, char *argv[]) if (argv[i][4]) { if (soi_s2n(argv[i] + 5, &opt.sseg, &opt.soff, &opt.sip, 0x7c00)) goto bail; - if ((opt.sseg << 4) + opt.soff + SECTOR - 1 > ADDRMAX) { - error("Arguments of 'sect=' are invalid - resulting address too big.\n"); - goto bail; - } } opt.sect = true; } else if (!strcmp(argv[i], "nosect")) { -- 2.7.4