From 20d1ce09e5395ac677688242bb4b6c24429ad14c Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Sun, 8 Oct 2017 18:48:02 -0700 Subject: [PATCH] Updated DUMB to version 2.0.2. --- Frameworks/Dumb/dumb/include/dumb.h | 4 ++-- Frameworks/Dumb/dumb/src/it/itorder.c | 4 ++++ Frameworks/Dumb/dumb/src/it/itread.c | 6 +++++- Frameworks/Dumb/dumb/src/it/load669.c | 2 +- Frameworks/Dumb/dumb/src/it/load6692.c | 2 +- Frameworks/Dumb/dumb/src/it/loadamf.c | 2 +- Frameworks/Dumb/dumb/src/it/loadamf2.c | 2 +- Frameworks/Dumb/dumb/src/it/loadany.c | 2 +- Frameworks/Dumb/dumb/src/it/loadany2.c | 2 +- Frameworks/Dumb/dumb/src/it/loadasy.c | 2 +- Frameworks/Dumb/dumb/src/it/loadasy2.c | 2 +- Frameworks/Dumb/dumb/src/it/loadmtm.c | 2 +- Frameworks/Dumb/dumb/src/it/loadmtm2.c | 2 +- Frameworks/Dumb/dumb/src/it/loadokt.c | 2 +- Frameworks/Dumb/dumb/src/it/loadokt2.c | 2 +- Frameworks/Dumb/dumb/src/it/loadoldpsm.c | 2 +- Frameworks/Dumb/dumb/src/it/loadoldpsm2.c | 2 +- Frameworks/Dumb/dumb/src/it/loadpsm.c | 2 +- Frameworks/Dumb/dumb/src/it/loadpsm2.c | 2 +- Frameworks/Dumb/dumb/src/it/loadptm.c | 2 +- Frameworks/Dumb/dumb/src/it/loadptm2.c | 2 +- Frameworks/Dumb/dumb/src/it/loadriff.c | 2 +- Frameworks/Dumb/dumb/src/it/loadriff2.c | 2 +- Frameworks/Dumb/dumb/src/it/loadstm.c | 2 +- Frameworks/Dumb/dumb/src/it/loadstm2.c | 2 +- Frameworks/Dumb/dumb/src/it/ptmeffect.c | 2 +- Frameworks/Dumb/dumb/src/it/read669.c | 7 +++++-- Frameworks/Dumb/dumb/src/it/read6692.c | 2 +- Frameworks/Dumb/dumb/src/it/readam.c | 7 +++++-- Frameworks/Dumb/dumb/src/it/readamf.c | 9 ++++++--- Frameworks/Dumb/dumb/src/it/readany.c | 2 +- Frameworks/Dumb/dumb/src/it/readany2.c | 2 +- Frameworks/Dumb/dumb/src/it/readasy.c | 7 +++++-- Frameworks/Dumb/dumb/src/it/readdsmf.c | 9 +++++++-- Frameworks/Dumb/dumb/src/it/readmod.c | 5 ++++- Frameworks/Dumb/dumb/src/it/readmtm.c | 9 ++++++--- Frameworks/Dumb/dumb/src/it/readokt.c | 7 +++++-- Frameworks/Dumb/dumb/src/it/readokt2.c | 2 +- Frameworks/Dumb/dumb/src/it/readoldpsm.c | 7 ++++--- Frameworks/Dumb/dumb/src/it/readpsm.c | 7 +++++-- Frameworks/Dumb/dumb/src/it/readptm.c | 8 ++++++-- Frameworks/Dumb/dumb/src/it/readriff.c | 2 +- Frameworks/Dumb/dumb/src/it/reads3m.c | 6 +++++- Frameworks/Dumb/dumb/src/it/readstm.c | 7 +++++-- Frameworks/Dumb/dumb/src/it/readstm2.c | 2 +- Frameworks/Dumb/dumb/src/it/readxm.c | 5 ++++- 46 files changed, 112 insertions(+), 60 deletions(-) diff --git a/Frameworks/Dumb/dumb/include/dumb.h b/Frameworks/Dumb/dumb/include/dumb.h index 8914f232a..3e3234583 100644 --- a/Frameworks/Dumb/dumb/include/dumb.h +++ b/Frameworks/Dumb/dumb/include/dumb.h @@ -40,8 +40,8 @@ extern "C" { */ #define DUMB_MAJOR_VERSION 2 #define DUMB_MINOR_VERSION 0 -#define DUMB_REVISION_VERSION 0 -#define DUMB_VERSION_STR "2.0.0" +#define DUMB_REVISION_VERSION 2 +#define DUMB_VERSION_STR "2.0.2" #define DUMB_VERSION \ (DUMB_MAJOR_VERSION * 10000 + DUMB_MINOR_VERSION * 100 + \ diff --git a/Frameworks/Dumb/dumb/src/it/itorder.c b/Frameworks/Dumb/dumb/src/it/itorder.c index 1fa5ed31c..f980aea55 100644 --- a/Frameworks/Dumb/dumb/src/it/itorder.c +++ b/Frameworks/Dumb/dumb/src/it/itorder.c @@ -40,6 +40,10 @@ int _dumb_it_fix_invalid_orders(DUMB_IT_SIGDATA *sigdata) { sigdata->order[i] <= last_invalid) { sigdata->order[i] = sigdata->n_patterns; found_some = 1; + } else if (sigdata->order[i] < first_invalid) { + IT_PATTERN *pattern = sigdata->pattern + sigdata->order[i]; + if (!pattern->n_rows || (pattern->n_entries && !pattern->entry)) + return -1; } } diff --git a/Frameworks/Dumb/dumb/src/it/itread.c b/Frameworks/Dumb/dumb/src/it/itread.c index 33b6c6e6b..3cc732693 100644 --- a/Frameworks/Dumb/dumb/src/it/itread.c +++ b/Frameworks/Dumb/dumb/src/it/itread.c @@ -1042,6 +1042,7 @@ static sigdata_t *it_load_sigdata(DUMBFILE *f) { // XXX sample count if (dumbfile_error(f) || sigdata->n_orders <= 0 || + sigdata->n_orders > 1024 || // Whoa, nelly. sigdata->n_instruments > 256 || sigdata->n_samples > 4000 || sigdata->n_patterns > 256) { _dumb_it_unload_sigdata(sigdata); @@ -1437,7 +1438,10 @@ static sigdata_t *it_load_sigdata(DUMBFILE *f) { free(buffer); free(component); - _dumb_it_fix_invalid_orders(sigdata); + if (_dumb_it_fix_invalid_orders(sigdata) < 0) { + _dumb_it_unload_sigdata(sigdata); + return NULL; + } return sigdata; } diff --git a/Frameworks/Dumb/dumb/src/it/load669.c b/Frameworks/Dumb/dumb/src/it/load669.c index eeaf25f3f..12fc27f7a 100644 --- a/Frameworks/Dumb/dumb/src/it/load669.c +++ b/Frameworks/Dumb/dumb/src/it/load669.c @@ -12,7 +12,7 @@ * file, opening and closing it for | < / \_ * you. | \/ /\ / * \_ / > / - * By Chris Moeller | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/load6692.c b/Frameworks/Dumb/dumb/src/it/load6692.c index e191eba91..3ae8d77b1 100644 --- a/Frameworks/Dumb/dumb/src/it/load6692.c +++ b/Frameworks/Dumb/dumb/src/it/load6692.c @@ -12,7 +12,7 @@ * file, opening and closing it for | < / \_ * you, and do an initial run-through. | \/ /\ / * \_ / > / - * By Chris Moeller | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadamf.c b/Frameworks/Dumb/dumb/src/it/loadamf.c index 38a8bf16c..955ac9b90 100644 --- a/Frameworks/Dumb/dumb/src/it/loadamf.c +++ b/Frameworks/Dumb/dumb/src/it/loadamf.c @@ -12,7 +12,7 @@ * opening and closing it for you. | < / \_ * | \/ /\ / * \_ / > / - * By Chris Moeller. | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadamf2.c b/Frameworks/Dumb/dumb/src/it/loadamf2.c index 34619889d..7c2de81ec 100644 --- a/Frameworks/Dumb/dumb/src/it/loadamf2.c +++ b/Frameworks/Dumb/dumb/src/it/loadamf2.c @@ -13,7 +13,7 @@ * do an initial run-through. | \/ /\ / * \_ / > / * | \ / / - * By Chris Moeller. | ' / + * By Christopher Snowhill. | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadany.c b/Frameworks/Dumb/dumb/src/it/loadany.c index 3e17851c5..46108777f 100644 --- a/Frameworks/Dumb/dumb/src/it/loadany.c +++ b/Frameworks/Dumb/dumb/src/it/loadany.c @@ -12,7 +12,7 @@ * module formats supported by DUMB, | < / \_ * opening and closing the file for you. | \/ /\ / * \_ / > / - * By Chris Moeller. | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadany2.c b/Frameworks/Dumb/dumb/src/it/loadany2.c index fa8f4b4f1..8681c5a5a 100644 --- a/Frameworks/Dumb/dumb/src/it/loadany2.c +++ b/Frameworks/Dumb/dumb/src/it/loadany2.c @@ -13,7 +13,7 @@ * opening and closing the file for | \/ /\ / * you, and do an initial run-through. \_ / > / * | \ / / - * by Chris Moeller. | ' / + * by Christopher Snowhill. | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadasy.c b/Frameworks/Dumb/dumb/src/it/loadasy.c index ef2492ec0..84744254f 100644 --- a/Frameworks/Dumb/dumb/src/it/loadasy.c +++ b/Frameworks/Dumb/dumb/src/it/loadasy.c @@ -12,7 +12,7 @@ * module file, opening and closing it | < / \_ * for you. | \/ /\ / * \_ / > / - * By Chris Moeller. | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadasy2.c b/Frameworks/Dumb/dumb/src/it/loadasy2.c index abea5878b..283051356 100644 --- a/Frameworks/Dumb/dumb/src/it/loadasy2.c +++ b/Frameworks/Dumb/dumb/src/it/loadasy2.c @@ -13,7 +13,7 @@ * for you, and do an initial run- | \/ /\ / * through. \_ / > / * | \ / / - * By Chris Moeller. | ' / + * By Christopher Snowhill. | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadmtm.c b/Frameworks/Dumb/dumb/src/it/loadmtm.c index ef1db1e7d..f29c9796f 100644 --- a/Frameworks/Dumb/dumb/src/it/loadmtm.c +++ b/Frameworks/Dumb/dumb/src/it/loadmtm.c @@ -12,7 +12,7 @@ * file, opening and closing it for | < / \_ * you. | \/ /\ / * \_ / > / - * By Chris Moeller | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadmtm2.c b/Frameworks/Dumb/dumb/src/it/loadmtm2.c index a3d2c9ff3..3e15e0f99 100644 --- a/Frameworks/Dumb/dumb/src/it/loadmtm2.c +++ b/Frameworks/Dumb/dumb/src/it/loadmtm2.c @@ -12,7 +12,7 @@ * file, opening and closing it for | < / \_ * you, and do an initial run-through. | \/ /\ / * \_ / > / - * By Chris Moeller | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadokt.c b/Frameworks/Dumb/dumb/src/it/loadokt.c index 3ed60a6f6..f86bcaaae 100644 --- a/Frameworks/Dumb/dumb/src/it/loadokt.c +++ b/Frameworks/Dumb/dumb/src/it/loadokt.c @@ -12,7 +12,7 @@ * file, opening and closing it for | < / \_ * you. | \/ /\ / * \_ / > / - * By Chris Moeller. | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadokt2.c b/Frameworks/Dumb/dumb/src/it/loadokt2.c index 73f67efd1..0c04762dc 100644 --- a/Frameworks/Dumb/dumb/src/it/loadokt2.c +++ b/Frameworks/Dumb/dumb/src/it/loadokt2.c @@ -13,7 +13,7 @@ * it for you, and do an initial run- | \/ /\ / * through. \_ / > / * | \ / / - * By Chris Moeller. | ' / + * By Christopher Snowhill. | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadoldpsm.c b/Frameworks/Dumb/dumb/src/it/loadoldpsm.c index a3b23fda7..f8935587b 100644 --- a/Frameworks/Dumb/dumb/src/it/loadoldpsm.c +++ b/Frameworks/Dumb/dumb/src/it/loadoldpsm.c @@ -12,7 +12,7 @@ * file, opening and closing it for | < / \_ * you. | \/ /\ / * \_ / > / - * By Chris Moeller. | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadoldpsm2.c b/Frameworks/Dumb/dumb/src/it/loadoldpsm2.c index b1bdf0523..b03fc9adf 100644 --- a/Frameworks/Dumb/dumb/src/it/loadoldpsm2.c +++ b/Frameworks/Dumb/dumb/src/it/loadoldpsm2.c @@ -13,7 +13,7 @@ * you, and do an initial run- | \/ /\ / * through. \_ / > / * | \ / / - * By Chris Moeller. | ' / + * By Christopher Snowhill. | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadpsm.c b/Frameworks/Dumb/dumb/src/it/loadpsm.c index 7fcd06972..5344b1709 100644 --- a/Frameworks/Dumb/dumb/src/it/loadpsm.c +++ b/Frameworks/Dumb/dumb/src/it/loadpsm.c @@ -12,7 +12,7 @@ * file, opening and closing it for | < / \_ * you. | \/ /\ / * \_ / > / - * By Chris Moeller. | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadpsm2.c b/Frameworks/Dumb/dumb/src/it/loadpsm2.c index e8a46e771..49326a70b 100644 --- a/Frameworks/Dumb/dumb/src/it/loadpsm2.c +++ b/Frameworks/Dumb/dumb/src/it/loadpsm2.c @@ -12,7 +12,7 @@ * file, opening and closing it for | < / \_ * you, and do an initial run-through. | \/ /\ / * \_ / > / - * By Chris Moeller. | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadptm.c b/Frameworks/Dumb/dumb/src/it/loadptm.c index 1c530405f..1ee8802de 100644 --- a/Frameworks/Dumb/dumb/src/it/loadptm.c +++ b/Frameworks/Dumb/dumb/src/it/loadptm.c @@ -12,7 +12,7 @@ * file, opening and closing it for | < / \_ * you. | \/ /\ / * \_ / > / - * By Chris Moeller. | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadptm2.c b/Frameworks/Dumb/dumb/src/it/loadptm2.c index a989e85a6..d8e94fdf8 100644 --- a/Frameworks/Dumb/dumb/src/it/loadptm2.c +++ b/Frameworks/Dumb/dumb/src/it/loadptm2.c @@ -12,7 +12,7 @@ * file, opening and closing it for | < / \_ * you, and do an initial run-through. | \/ /\ / * \_ / > / - * By Chris Moeller. | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadriff.c b/Frameworks/Dumb/dumb/src/it/loadriff.c index 8a9fa2b1d..95d7100c5 100644 --- a/Frameworks/Dumb/dumb/src/it/loadriff.c +++ b/Frameworks/Dumb/dumb/src/it/loadriff.c @@ -12,7 +12,7 @@ * opening and closing it for you. | < / \_ * | \/ /\ / * \_ / > / - * By Chris Moeller. | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadriff2.c b/Frameworks/Dumb/dumb/src/it/loadriff2.c index 5b818c5ef..ec80f837e 100644 --- a/Frameworks/Dumb/dumb/src/it/loadriff2.c +++ b/Frameworks/Dumb/dumb/src/it/loadriff2.c @@ -12,7 +12,7 @@ * opening and closing it for you, | < / \_ * and do an initial run-through. | \/ /\ / * \_ / > / - * By Chris Moeller. | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadstm.c b/Frameworks/Dumb/dumb/src/it/loadstm.c index d5e6b0323..3d1aab3a5 100644 --- a/Frameworks/Dumb/dumb/src/it/loadstm.c +++ b/Frameworks/Dumb/dumb/src/it/loadstm.c @@ -12,7 +12,7 @@ * file, opening and closing it for | < / \_ * you. | \/ /\ / * \_ / > / - * By Chris Moeller. | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/loadstm2.c b/Frameworks/Dumb/dumb/src/it/loadstm2.c index 22203890c..64da9f9be 100644 --- a/Frameworks/Dumb/dumb/src/it/loadstm2.c +++ b/Frameworks/Dumb/dumb/src/it/loadstm2.c @@ -12,7 +12,7 @@ * file, opening and closing it for | < / \_ * you, and do an initial run-through. | \/ /\ / * \_ / > / - * By Chris Moeller. | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/ptmeffect.c b/Frameworks/Dumb/dumb/src/it/ptmeffect.c index 281ef7811..b22dd0146 100644 --- a/Frameworks/Dumb/dumb/src/it/ptmeffect.c +++ b/Frameworks/Dumb/dumb/src/it/ptmeffect.c @@ -11,7 +11,7 @@ * ptmeffect.c - Code for converting PTM / / \ \ * effects to IT effects. | < / \_ * | \/ /\ / - * By Chris Moeller. Based on xmeffect.c \_ / > / + * By Christopher Snowhill. Based on xmeffect.c \_ / > / * by Julien Cugniere. | \ / / * | ' / * \__/ diff --git a/Frameworks/Dumb/dumb/src/it/read669.c b/Frameworks/Dumb/dumb/src/it/read669.c index 849f200a4..f4630e82c 100644 --- a/Frameworks/Dumb/dumb/src/it/read669.c +++ b/Frameworks/Dumb/dumb/src/it/read669.c @@ -11,7 +11,7 @@ * read669.c - Code to read a 669 Composer module / / \ \ * from an open file. | < / \_ * | \/ /\ / - * By Chris Moeller. \_ / > / + * By Christopher Snowhill. \_ / > / * | \ / / * | ' / * \__/ @@ -423,7 +423,10 @@ static DUMB_IT_SIGDATA *it_669_load_sigdata(DUMBFILE *f, int *ext) { sigdata->channel_pan[i + 1] = 32 - sep; } - _dumb_it_fix_invalid_orders(sigdata); + if (_dumb_it_fix_invalid_orders(sigdata) < 0) { + _dumb_it_unload_sigdata(sigdata); + return NULL; + } return sigdata; } diff --git a/Frameworks/Dumb/dumb/src/it/read6692.c b/Frameworks/Dumb/dumb/src/it/read6692.c index 8a2adabd7..4ac31d2ab 100644 --- a/Frameworks/Dumb/dumb/src/it/read6692.c +++ b/Frameworks/Dumb/dumb/src/it/read6692.c @@ -11,7 +11,7 @@ * read6692.c - Code to read a 669 Composer module / / \ \ * from an open file, and do an initial | < / \_ * run-through. | \/ /\ / - * By Chris Moeller. \_ / > / + * By Christopher Snowhill. \_ / > / * | \ / / * | ' / * \__/ diff --git a/Frameworks/Dumb/dumb/src/it/readam.c b/Frameworks/Dumb/dumb/src/it/readam.c index 5dcabc532..630e37946 100644 --- a/Frameworks/Dumb/dumb/src/it/readam.c +++ b/Frameworks/Dumb/dumb/src/it/readam.c @@ -11,7 +11,7 @@ * readam.c - Code to read a RIFF AM module / / \ \ * from a parsed RIFF structure. | < / \_ * | \/ /\ / - * By Chris Moeller. \_ / > / + * By Christopher Snowhill. \_ / > / * | \ / / * | ' / * \__/ @@ -463,7 +463,10 @@ static DUMB_IT_SIGDATA *it_riff_amff_load_sigdata(DUMBFILE *f, } } - _dumb_it_fix_invalid_orders(sigdata); + if (_dumb_it_fix_invalid_orders(sigdata) < 0) { + _dumb_it_unload_sigdata(sigdata); + return NULL; + } return sigdata; diff --git a/Frameworks/Dumb/dumb/src/it/readamf.c b/Frameworks/Dumb/dumb/src/it/readamf.c index 8ba9d0582..f419fe0ad 100644 --- a/Frameworks/Dumb/dumb/src/it/readamf.c +++ b/Frameworks/Dumb/dumb/src/it/readamf.c @@ -11,7 +11,7 @@ * readamf.c - Code to read a DSMI AMF module from / / \ \ * an open file. | < / \_ * | \/ /\ / - * By Chris Moeller. \_ / > / + * By Christopher Snowhill. \_ / > / * | \ / / * | ' / * \__/ @@ -536,8 +536,6 @@ static DUMB_IT_SIGDATA *it_amf_load_sigdata(DUMBFILE *f, int *version) { sigdata->mixing_volume = 48; sigdata->pan_separation = 128; - _dumb_it_fix_invalid_orders(sigdata); - for (i = 0; i < realntracks; i++) { if (track[i]) { free(track[i]); @@ -547,6 +545,11 @@ static DUMB_IT_SIGDATA *it_amf_load_sigdata(DUMBFILE *f, int *version) { free(trackmap); free(orderstotracks); + if (_dumb_it_fix_invalid_orders(sigdata) < 0) { + _dumb_it_unload_sigdata(sigdata); + return NULL; + } + return sigdata; error_all: diff --git a/Frameworks/Dumb/dumb/src/it/readany.c b/Frameworks/Dumb/dumb/src/it/readany.c index 3f5c8d805..483fec513 100644 --- a/Frameworks/Dumb/dumb/src/it/readany.c +++ b/Frameworks/Dumb/dumb/src/it/readany.c @@ -11,7 +11,7 @@ * readany.c - Code to detect and read any of the / / \ \ * module formats supported by DUMB. | < / \_ * | \/ /\ / - * By Chris Moeller. \_ / > / + * By Christopher Snowhill. \_ / > / * | \ / / * | ' / * \__/ diff --git a/Frameworks/Dumb/dumb/src/it/readany2.c b/Frameworks/Dumb/dumb/src/it/readany2.c index fef2023cd..cc1341f7a 100644 --- a/Frameworks/Dumb/dumb/src/it/readany2.c +++ b/Frameworks/Dumb/dumb/src/it/readany2.c @@ -13,7 +13,7 @@ * from an open file and do an initial | \/ /\ / * run-through. \_ / > / * | \ / / - * by Chris Moeller. | ' / + * by Christopher Snowhill. | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/readasy.c b/Frameworks/Dumb/dumb/src/it/readasy.c index 8ebe4a3d7..6ff5546be 100644 --- a/Frameworks/Dumb/dumb/src/it/readasy.c +++ b/Frameworks/Dumb/dumb/src/it/readasy.c @@ -11,7 +11,7 @@ * readasy.c - Code to read an ASYLUM Music Format / / \ \ * module from an open file. | < / \_ * | \/ /\ / - * By Chris Moeller. \_ / > / + * By Christopher Snowhill. \_ / > / * | \ / / * | ' / * \__/ @@ -314,7 +314,10 @@ static DUMB_IT_SIGDATA *it_asy_load_sigdata(DUMBFILE *f) { sigdata->channel_pan[i + 3] = 32 - sep; } - _dumb_it_fix_invalid_orders(sigdata); + if (_dumb_it_fix_invalid_orders(sigdata) < 0) { + _dumb_it_unload_sigdata(sigdata); + return NULL; + } return sigdata; } diff --git a/Frameworks/Dumb/dumb/src/it/readdsmf.c b/Frameworks/Dumb/dumb/src/it/readdsmf.c index 2095f66b7..b34803596 100644 --- a/Frameworks/Dumb/dumb/src/it/readdsmf.c +++ b/Frameworks/Dumb/dumb/src/it/readdsmf.c @@ -11,7 +11,7 @@ * readam.c - Code to read a RIFF DSMF module / / \ \ * from a parsed RIFF structure. | < / \_ * | \/ /\ / - * By Chris Moeller. \_ / > / + * By Christopher Snowhill. \_ / > / * | \ / / * | ' / * \__/ @@ -293,6 +293,8 @@ static DUMB_IT_SIGDATA *it_riff_dsmf_load_sigdata(DUMBFILE *f, sigdata->flags = IT_STEREO | IT_OLD_EFFECTS | IT_COMPATIBLE_GXX; dumbfile_skip(f, 36 - 28); sigdata->n_orders = dumbfile_igetw(f); + if (sigdata->n_orders > 1024) // Whoa, nelly. + goto error_usd; // sigdata->n_samples = ptr[ 38 ] | ( ptr[ 39 ] << 8 ); // whatever // sigdata->n_patterns = ptr[ 40 ] | ( ptr[ 41 ] << 8 ); dumbfile_skip(f, 42 - 38); @@ -355,7 +357,10 @@ static DUMB_IT_SIGDATA *it_riff_dsmf_load_sigdata(DUMBFILE *f, } } - _dumb_it_fix_invalid_orders(sigdata); + if (_dumb_it_fix_invalid_orders(sigdata) < 0) { + _dumb_it_unload_sigdata(sigdata); + return NULL; + } return sigdata; diff --git a/Frameworks/Dumb/dumb/src/it/readmod.c b/Frameworks/Dumb/dumb/src/it/readmod.c index 6c130e56d..724ff07c1 100644 --- a/Frameworks/Dumb/dumb/src/it/readmod.c +++ b/Frameworks/Dumb/dumb/src/it/readmod.c @@ -621,7 +621,10 @@ static DUMB_IT_SIGDATA *it_mod_load_sigdata(DUMBFILE *f, int restrict_) { sigdata->channel_pan[i + 3] = 32 - sep; } - _dumb_it_fix_invalid_orders(sigdata); + if (_dumb_it_fix_invalid_orders(sigdata) < 0) { + _dumb_it_unload_sigdata(sigdata); + return NULL; + } return sigdata; } diff --git a/Frameworks/Dumb/dumb/src/it/readmtm.c b/Frameworks/Dumb/dumb/src/it/readmtm.c index c5a273e76..d33cb3bda 100644 --- a/Frameworks/Dumb/dumb/src/it/readmtm.c +++ b/Frameworks/Dumb/dumb/src/it/readmtm.c @@ -11,7 +11,7 @@ * readmtm.c - Code to read a MultiTracker Module / / \ \ * from an open file. | < / \_ * | \/ /\ / - * By Chris Moeller. \_ / > / + * By Christopher Snowhill. \_ / > / * | \ / / * | ' / * \__/ @@ -389,12 +389,15 @@ static DUMB_IT_SIGDATA *it_mtm_load_sigdata(DUMBFILE *f, int *version) { goto error_fs; } - _dumb_it_fix_invalid_orders(sigdata); - free(sequence); free(track); free(skip_bytes); + if (_dumb_it_fix_invalid_orders(sigdata) < 0) { + _dumb_it_unload_sigdata(sigdata); + return NULL; + } + return sigdata; error_fc: diff --git a/Frameworks/Dumb/dumb/src/it/readokt.c b/Frameworks/Dumb/dumb/src/it/readokt.c index 8ac7c201d..8fe28546d 100644 --- a/Frameworks/Dumb/dumb/src/it/readokt.c +++ b/Frameworks/Dumb/dumb/src/it/readokt.c @@ -11,7 +11,7 @@ * readokt.c - Code to read an Oktalyzer module / / \ \ * from an open file. | < / \_ * | \/ /\ / - * By Chris Moeller. \_ / > / + * By Christopher Snowhill. \_ / > / * | \ / / * | ' / * \__/ @@ -577,7 +577,10 @@ static DUMB_IT_SIGDATA *it_okt_load_sigdata(DUMBFILE *f) { memset(sigdata->channel_pan + n_channels, 32, DUMB_IT_N_CHANNELS - n_channels); - _dumb_it_fix_invalid_orders(sigdata); + if (_dumb_it_fix_invalid_orders(sigdata) < 0) { + _dumb_it_unload_sigdata(sigdata); + return NULL; + } return sigdata; } diff --git a/Frameworks/Dumb/dumb/src/it/readokt2.c b/Frameworks/Dumb/dumb/src/it/readokt2.c index dca436996..729d94903 100644 --- a/Frameworks/Dumb/dumb/src/it/readokt2.c +++ b/Frameworks/Dumb/dumb/src/it/readokt2.c @@ -13,7 +13,7 @@ * an initial run-through. | \/ /\ / * \_ / > / * | \ / / - * By Chris Moeller. | ' / + * By Christopher Snowhill. | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/readoldpsm.c b/Frameworks/Dumb/dumb/src/it/readoldpsm.c index 533ab53a3..28a8c99a9 100644 --- a/Frameworks/Dumb/dumb/src/it/readoldpsm.c +++ b/Frameworks/Dumb/dumb/src/it/readoldpsm.c @@ -11,7 +11,7 @@ * readpsm.c - Code to read an old Protracker / / \ \ * Studio module from an open file. | < / \_ * | \/ /\ / - * By Chris Moeller. \_ / > / + * By Christopher Snowhill. \_ / > / * | \ / / * | ' / * \__/ @@ -111,7 +111,7 @@ static int it_old_psm_read_samples(IT_SAMPLE **sample, DUMBFILE *f, int *num) { } else smp.finetune = 0; - smp.flags |= IT_SAMPLE_EXISTS; + smp.flags = IT_SAMPLE_EXISTS; if (flags & 0x41) continue; if (flags & 0x20) @@ -705,7 +705,8 @@ static DUMB_IT_SIGDATA *it_old_psm_load_sigdata(DUMBFILE *f) { } } - _dumb_it_fix_invalid_orders(sigdata); + if (_dumb_it_fix_invalid_orders(sigdata) < 0) + goto error_fc; free(component); diff --git a/Frameworks/Dumb/dumb/src/it/readpsm.c b/Frameworks/Dumb/dumb/src/it/readpsm.c index 94efedfc4..9b9e6a229 100644 --- a/Frameworks/Dumb/dumb/src/it/readpsm.c +++ b/Frameworks/Dumb/dumb/src/it/readpsm.c @@ -11,7 +11,7 @@ * readpsm.c - Code to read a Protracker Studio / / \ \ * module from an open file. | < / \_ * | \/ /\ / - * By Chris Moeller. \_ / > / + * By Christopher Snowhill. \_ / > / * | \ / / * | ' / * \__/ @@ -1062,7 +1062,10 @@ static DUMB_IT_SIGDATA *it_psm_load_sigdata(DUMBFILE *f, int *ver, free(songchunk); free_chunks(chunk, n_chunks); - _dumb_it_fix_invalid_orders(sigdata); + if (_dumb_it_fix_invalid_orders(sigdata) < 0) { + _dumb_it_unload_sigdata(sigdata); + return NULL; + } dumb_it_optimize_orders(sigdata); diff --git a/Frameworks/Dumb/dumb/src/it/readptm.c b/Frameworks/Dumb/dumb/src/it/readptm.c index 9ac6b7352..2d858b86c 100644 --- a/Frameworks/Dumb/dumb/src/it/readptm.c +++ b/Frameworks/Dumb/dumb/src/it/readptm.c @@ -11,7 +11,7 @@ * readptm.c - Code to read a Poly Tracker v2.03 / / \ \ * module from an open file. | < / \_ * | \/ /\ / - * By Chris Moeller. Based on reads3m.c \_ / > / + * By Christopher Snowhill. Based on reads3m.c \_ / > / * by entheh. | \ / / * | ' / * \__/ @@ -352,6 +352,7 @@ static DUMB_IT_SIGDATA *it_ptm_load_sigdata(DUMBFILE *f) { sigdata->n_patterns = dumbfile_igetw(f); if (dumbfile_error(f) || sigdata->n_orders <= 0 || + sigdata->n_orders > 1024 || // Whoa, nelly. sigdata->n_samples > 255 || sigdata->n_patterns > 128) { _dumb_it_unload_sigdata(sigdata); return NULL; @@ -534,7 +535,10 @@ static DUMB_IT_SIGDATA *it_ptm_load_sigdata(DUMBFILE *f) { free(buffer); free(component); - _dumb_it_fix_invalid_orders(sigdata); + if (_dumb_it_fix_invalid_orders(sigdata) < 0) { + _dumb_it_unload_sigdata(sigdata); + return NULL; + } return sigdata; } diff --git a/Frameworks/Dumb/dumb/src/it/readriff.c b/Frameworks/Dumb/dumb/src/it/readriff.c index 4e4ab7a29..4aa4d93d5 100644 --- a/Frameworks/Dumb/dumb/src/it/readriff.c +++ b/Frameworks/Dumb/dumb/src/it/readriff.c @@ -12,7 +12,7 @@ * from memory. | < / \_ * | \/ /\ / * \_ / > / - * By Chris Moeller. | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/reads3m.c b/Frameworks/Dumb/dumb/src/it/reads3m.c index 82bb0daac..ebdc5c368 100644 --- a/Frameworks/Dumb/dumb/src/it/reads3m.c +++ b/Frameworks/Dumb/dumb/src/it/reads3m.c @@ -480,6 +480,7 @@ static DUMB_IT_SIGDATA *it_s3m_load_sigdata(DUMBFILE *f, int *cwtv) { sigdata->n_patterns = dumbfile_igetw(f); if (dumbfile_error(f) || sigdata->n_orders <= 0 || + sigdata->n_orders > 1024 || // Whoa, nelly. sigdata->n_samples > 256 || sigdata->n_patterns > 256) { _dumb_it_unload_sigdata(sigdata); return NULL; @@ -733,7 +734,10 @@ static DUMB_IT_SIGDATA *it_s3m_load_sigdata(DUMBFILE *f, int *cwtv) { free(buffer); free(component); - _dumb_it_fix_invalid_orders(sigdata); + if (_dumb_it_fix_invalid_orders(sigdata) < 0) { + _dumb_it_unload_sigdata(sigdata); + return NULL; + } return sigdata; } diff --git a/Frameworks/Dumb/dumb/src/it/readstm.c b/Frameworks/Dumb/dumb/src/it/readstm.c index 0257276d7..a82ed2e06 100644 --- a/Frameworks/Dumb/dumb/src/it/readstm.c +++ b/Frameworks/Dumb/dumb/src/it/readstm.c @@ -11,7 +11,7 @@ * readstm.c - Code to read a ScreamTracker 2 / / \ \ * module from an open file. | < / \_ * | \/ /\ / - * By Chris Moeller. \_ / > / + * By Christopher Snowhill. \_ / > / * | \ / / * | ' / * \__/ @@ -355,7 +355,10 @@ static DUMB_IT_SIGDATA *it_stm_load_sigdata(DUMBFILE *f, int *version) { } } - _dumb_it_fix_invalid_orders(sigdata); + if (_dumb_it_fix_invalid_orders(sigdata) < 0) { + _dumb_it_unload_sigdata(sigdata); + return NULL; + } return sigdata; } diff --git a/Frameworks/Dumb/dumb/src/it/readstm2.c b/Frameworks/Dumb/dumb/src/it/readstm2.c index ca883a988..dd5575197 100644 --- a/Frameworks/Dumb/dumb/src/it/readstm2.c +++ b/Frameworks/Dumb/dumb/src/it/readstm2.c @@ -12,7 +12,7 @@ * module from an open file and do an | < / \_ * initial run-through. | \/ /\ / * \_ / > / - * By Chris Moeller. | \ / / + * By Christopher Snowhill. | \ / / * | ' / * \__/ */ diff --git a/Frameworks/Dumb/dumb/src/it/readxm.c b/Frameworks/Dumb/dumb/src/it/readxm.c index bb0628ac1..1ced7d619 100644 --- a/Frameworks/Dumb/dumb/src/it/readxm.c +++ b/Frameworks/Dumb/dumb/src/it/readxm.c @@ -1252,7 +1252,10 @@ static DUMB_IT_SIGDATA *it_xm_load_sigdata(DUMBFILE *f, int *version) { memset(sigdata->channel_volume, 64, DUMB_IT_N_CHANNELS); memset(sigdata->channel_pan, 32, DUMB_IT_N_CHANNELS); - _dumb_it_fix_invalid_orders(sigdata); + if (_dumb_it_fix_invalid_orders(sigdata) < 0) { + _dumb_it_unload_sigdata(sigdata); + return NULL; + } return sigdata; }