From 7d62e61608a8c54edc46eb5702287af84b045c69 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Sun, 14 Jul 2024 03:00:52 -0400 Subject: add sanity checking to BASIC header, in parse_header(). --- bas.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'bas.c') diff --git a/bas.c b/bas.c index cf73fef..24508e4 100644 --- a/bas.c +++ b/bas.c @@ -115,13 +115,17 @@ void parse_header(void) { vvstart = vvtp - TBL_OFFSET; code_end = starp - TBL_OFFSET; - if(lomem) die("This doesn't look like an Atari BASIC program (no $0000 signature)."); - if(filelen < code_end) { fprintf(stderr, "Warning: file is truncated: %d bytes, should be %d.\n", filelen, code_end); } if(verbose) dump_header_vars(); + + /* these checks are actually kind of conservative. */ + if(lomem) die("Not an Atari BASIC program (no $0000 signature)."); + if(vntp < 0x100) die("Not an Atari BASIC program (invalid VNTP)."); + if(vvtp < vntd) die("Not an Atari BASIC program (invalid VVTP)."); + if(starp < vvtp) die("Not an Atari BASIC program (invalid STARP)."); } void update_header(void) { -- cgit v1.2.3