mirror of
https://github.com/kichikuou/xsystem35-sdl2.git
synced 2026-09-22 22:48:08 +03:00
Prevent buffer overrun by DF command
This commit is contained in:
+10
@@ -76,11 +76,21 @@ void commandDR() {
|
||||
|
||||
void commandDF() {
|
||||
int *data_var = getCaliVariable();
|
||||
int varno = preVarNo;
|
||||
int cnt = getCaliValue();
|
||||
int data = getCaliValue();
|
||||
|
||||
DEBUG_COMMAND("DF %p,%d,%d:\n", data_var, cnt, data);
|
||||
|
||||
const arrayVarStruct* array = &sysVarAttribute[varno];
|
||||
if (array->page) {
|
||||
int maxlen = arrayVarBuffer[array->page - 1].max - array->offset - *array->pointvar;
|
||||
if (cnt > maxlen) {
|
||||
WARNING("%03d:%05x: count exceeds array boundary (%d > %d)\n", sl_getPage(), sl_getIndex(), cnt, maxlen);
|
||||
cnt = maxlen;
|
||||
}
|
||||
}
|
||||
|
||||
while (cnt--) {
|
||||
*data_var = data; data_var++;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user