aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Soltys <soltys@ziu.info>2010-10-13 23:32:38 +0200
committerMichal Soltys <soltys@ziu.info>2010-10-14 23:08:29 +0200
commitc6ef920182ecba8bd67ea88223be48685b2ca30d (patch)
tree7c7ff94d4a7775298a46ed4f4ade5d82b5e687cd
parent15f1da3858201952efa0a58d5f6ec2babcc8acec (diff)
downloadsyslinux-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.c8
-rw-r--r--com32/chain/options.c4
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")) {