diff options
author | Michal Soltys <soltys@ziu.info> | 2010-10-13 23:32:38 +0200 |
---|---|---|
committer | Michal Soltys <soltys@ziu.info> | 2010-10-14 23:08:29 +0200 |
commit | c6ef920182ecba8bd67ea88223be48685b2ca30d (patch) | |
tree | 7c7ff94d4a7775298a46ed4f4ade5d82b5e687cd | |
parent | 15f1da3858201952efa0a58d5f6ec2babcc8acec (diff) | |
download | syslinux-c6ef920182ecba8bd67ea88223be48685b2ca30d.tar.gz syslinux-c6ef920182ecba8bd67ea88223be48685b2ca30d.tar.xz syslinux-c6ef920182ecba8bd67ea88223be48685b2ca30d.zip |
com32/chain: remove remains of SECTOR
All chain related code no longer depends on hardcoded sector
size.
Signed-off-by: Michal Soltys <soltys@ziu.info>
-rw-r--r-- | com32/chain/chain.c | 8 | ||||
-rw-r--r-- | 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 1236b382..3dc6d91f 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 53810da7..37b9f114 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")) { |