[Scummvm-cvs-logs] SF.net SVN: scummvm:[53727] scummvm/branches/branch-1-2-0/engines/scumm

Kirben at users.sourceforge.net Kirben at users.sourceforge.net
Sat Oct 23 04:20:19 CEST 2010


Revision: 53727
          http://scummvm.svn.sourceforge.net/scummvm/?rev=53727&view=rev
Author:   Kirben
Date:     2010-10-23 02:20:19 +0000 (Sat, 23 Oct 2010)

Log Message:
-----------
SCUMM: Backport fix for buffer overflow, that was causing crashes when saving in Backyard Baseball 2001/2003.

Modified Paths:
--------------
    scummvm/branches/branch-1-2-0/engines/scumm/he/script_v100he.cpp
    scummvm/branches/branch-1-2-0/engines/scumm/he/script_v60he.cpp
    scummvm/branches/branch-1-2-0/engines/scumm/he/script_v72he.cpp
    scummvm/branches/branch-1-2-0/engines/scumm/scumm.cpp
    scummvm/branches/branch-1-2-0/engines/scumm/scumm.h

Modified: scummvm/branches/branch-1-2-0/engines/scumm/he/script_v100he.cpp
===================================================================
--- scummvm/branches/branch-1-2-0/engines/scumm/he/script_v100he.cpp	2010-10-23 02:18:08 UTC (rev 53726)
+++ scummvm/branches/branch-1-2-0/engines/scumm/he/script_v100he.cpp	2010-10-23 02:20:19 UTC (rev 53727)
@@ -1623,13 +1623,11 @@
 
 	case 137:
 		byte buffer[256];
-		int r;
 
 		copyScriptString((byte *)buffer, sizeof(buffer));
 
-		r = convertFilePath(buffer, sizeof(buffer));
-		memcpy(_saveLoadFileName, buffer + r, sizeof(buffer) - r);
-		debug(1, "o100_roomOps: case 137: filename %s", _saveLoadFileName);
+		_saveLoadFileName = (char *)buffer + convertFilePath(buffer, sizeof(buffer));
+		debug(1, "o100_roomOps: case 137: filename %s", _saveLoadFileName.c_str());
 
 		_saveLoadFlag = pop();
 		_saveLoadSlot = 255;

Modified: scummvm/branches/branch-1-2-0/engines/scumm/he/script_v60he.cpp
===================================================================
--- scummvm/branches/branch-1-2-0/engines/scumm/he/script_v60he.cpp	2010-10-23 02:18:08 UTC (rev 53726)
+++ scummvm/branches/branch-1-2-0/engines/scumm/he/script_v60he.cpp	2010-10-23 02:20:19 UTC (rev 53727)
@@ -283,15 +283,14 @@
 		break;
 	case 221:
 		byte buffer[100];
-		int len, r;
+		int len;
 
 		convertMessageToString(_scriptPointer, buffer, sizeof(buffer));
 		len = resStrLen(_scriptPointer);
 		_scriptPointer += len + 1;
 
-		r = convertFilePath(buffer, sizeof(buffer));
-		memcpy(_saveLoadFileName, buffer + r, sizeof(buffer) - r);
-		debug(1, "o60_roomOps: case 221: filename %s", _saveLoadFileName);
+		_saveLoadFileName = (char *)buffer + convertFilePath(buffer, sizeof(buffer));
+		debug(1, "o60_roomOps: case 221: filename %s", _saveLoadFileName.c_str());
 
 		_saveLoadFlag = pop();
 		_saveLoadSlot = 255;

Modified: scummvm/branches/branch-1-2-0/engines/scumm/he/script_v72he.cpp
===================================================================
--- scummvm/branches/branch-1-2-0/engines/scumm/he/script_v72he.cpp	2010-10-23 02:18:08 UTC (rev 53726)
+++ scummvm/branches/branch-1-2-0/engines/scumm/he/script_v72he.cpp	2010-10-23 02:20:19 UTC (rev 53727)
@@ -711,13 +711,11 @@
 
 	case 221:
 		byte buffer[256];
-		int r;
 
 		copyScriptString((byte *)buffer, sizeof(buffer));
 
-		r = convertFilePath(buffer, sizeof(buffer));
-		memcpy(_saveLoadFileName, buffer + r, sizeof(buffer) - r);
-		debug(1, "o72_roomOps: case 221: filename %s", _saveLoadFileName);
+		_saveLoadFileName = (char *)buffer + convertFilePath(buffer, sizeof(buffer));
+		debug(1, "o72_roomOps: case 221: filename %s", _saveLoadFileName.c_str());
 
 		_saveLoadFlag = pop();
 		_saveLoadSlot = 255;

Modified: scummvm/branches/branch-1-2-0/engines/scumm/scumm.cpp
===================================================================
--- scummvm/branches/branch-1-2-0/engines/scumm/scumm.cpp	2010-10-23 02:18:08 UTC (rev 53726)
+++ scummvm/branches/branch-1-2-0/engines/scumm/scumm.cpp	2010-10-23 02:20:19 UTC (rev 53727)
@@ -209,7 +209,6 @@
 	_saveLoadSlot = 0;
 	_lastSaveTime = 0;
 	_saveTemporaryState = false;
-	memset(_saveLoadFileName, 0, sizeof(_saveLoadFileName));
 	memset(_saveLoadName, 0, sizeof(_saveLoadName));
 	memset(_localScriptOffsets, 0, sizeof(_localScriptOffsets));
 	_scriptPointer = NULL;

Modified: scummvm/branches/branch-1-2-0/engines/scumm/scumm.h
===================================================================
--- scummvm/branches/branch-1-2-0/engines/scumm/scumm.h	2010-10-23 02:18:08 UTC (rev 53726)
+++ scummvm/branches/branch-1-2-0/engines/scumm/scumm.h	2010-10-23 02:20:19 UTC (rev 53727)
@@ -643,7 +643,7 @@
 	byte _saveLoadFlag, _saveLoadSlot;
 	uint32 _lastSaveTime;
 	bool _saveTemporaryState;
-	char _saveLoadFileName[32];
+	Common::String _saveLoadFileName;
 	char _saveLoadName[32];
 
 	bool saveState(Common::OutSaveFile *out, bool writeHeader = true);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list