[Scummvm-cvs-logs] CVS: scummvm/scumm script.cpp,1.46,1.47
Max Horn
fingolfin at users.sourceforge.net
Thu Mar 6 18:43:10 CET 2003
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv5627
Modified Files:
script.cpp
Log Message:
ouch - fixed OOB access on _baseFLObject; also added various sanity checks (thx valgrind)
Index: script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script.cpp,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -d -r1.46 -r1.47
--- script.cpp 6 Mar 2003 21:46:17 -0000 1.46
+++ script.cpp 7 Mar 2003 02:42:39 -0000 1.47
@@ -234,6 +234,7 @@
case WIO_INVENTORY: /* inventory script * */
idx = getObjectIndex(ss->number);
_scriptOrgPointer = getResourceAddress(rtInventory, idx);
+ assert(idx < _maxInventoryItems);
_lastCodePtr = &_baseInventoryItems[idx];
break;
@@ -241,22 +242,26 @@
case WIO_ROOM: /* room script */
if (_features & GF_AFTER_V8) {
_scriptOrgPointer = getResourceAddress(rtRoomScripts, _roomResource);
+ assert(_roomResource < res.num[rtRoomScripts]);
_lastCodePtr = &res.address[rtRoomScripts][_roomResource];
} else {
_scriptOrgPointer = getResourceAddress(rtRoom, _roomResource);
+ assert(_roomResource < _maxRooms);
_lastCodePtr = &_baseRooms[_roomResource];
}
break;
case WIO_GLOBAL: /* global script */
_scriptOrgPointer = getResourceAddress(rtScript, ss->number);
+ assert(ss->number < _maxScripts);
_lastCodePtr = &_baseScripts[ss->number];
break;
case WIO_FLOBJECT: /* flobject script */
idx = getObjectIndex(ss->number);
_scriptOrgPointer = getResourceAddress(rtFlObject, _objs[idx].fl_object_index);
- _lastCodePtr = &_baseFLObject[ss->number];
+ assert(idx < _maxFLObject);
+ _lastCodePtr = &_baseFLObject[idx];
break;
default:
error("Bad type while getting base address");
More information about the Scummvm-git-logs
mailing list