aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/savefile.cpp
diff options
context:
space:
mode:
authorPeter Kohaut2019-03-04 22:55:31 +0100
committerPeter Kohaut2019-03-04 22:55:31 +0100
commit45a27decf3fd3205e856d9b346f29060307dc6dc (patch)
treedc58f1d94617c0fc7371ed317bed993ca5c74c58 /engines/bladerunner/savefile.cpp
parent213e6b52c8861a128dc25b036ff9583314615785 (diff)
downloadscummvm-rg350-45a27decf3fd3205e856d9b346f29060307dc6dc.tar.gz
scummvm-rg350-45a27decf3fd3205e856d9b346f29060307dc6dc.tar.bz2
scummvm-rg350-45a27decf3fd3205e856d9b346f29060307dc6dc.zip
BLADERUNNER: Fixed overflow in savegame name
Diffstat (limited to 'engines/bladerunner/savefile.cpp')
-rw-r--r--engines/bladerunner/savefile.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/engines/bladerunner/savefile.cpp b/engines/bladerunner/savefile.cpp
index ed6217925b..b556b81756 100644
--- a/engines/bladerunner/savefile.cpp
+++ b/engines/bladerunner/savefile.cpp
@@ -182,10 +182,12 @@ void SaveFileWriteStream::writeBool(bool v) {
writeUint32LE(v);
}
-void SaveFileWriteStream::writeStringSz(const Common::String &s, int sz) {
- assert(s.size() < (uint)sz);
- write(s.begin(), s.size());
- padBytes((uint)sz - s.size());
+void SaveFileWriteStream::writeStringSz(const Common::String &s, uint sz) {
+ uint32 sizeToWrite = MIN(sz, s.size());
+ write(s.begin(), sizeToWrite);
+ if (sizeToWrite < sz) {
+ padBytes(sz - sizeToWrite);
+ }
}
void SaveFileWriteStream::writeVector2(const Vector2 &v) {
@@ -238,10 +240,10 @@ bool SaveFileReadStream::readBool() {
return readUint32LE();
}
-Common::String SaveFileReadStream::readStringSz(int sz) {
+Common::String SaveFileReadStream::readStringSz(uint sz) {
char *buf = new char[sz];
read(buf, sz);
- Common::String result = buf;
+ Common::String result(buf, sz);
delete[] buf;
return result;
}