aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMartin Kiewitz2010-04-04 20:47:03 +0000
committerMartin Kiewitz2010-04-04 20:47:03 +0000
commit2e7b049e41eb02722d3daf518a8cfb83f95f8349 (patch)
tree69016d717f879770df2b226596686c425b5c6770 /engines
parentf792c100a31434d8b50c78698c03d5dc072c870a (diff)
downloadscummvm-rg350-2e7b049e41eb02722d3daf518a8cfb83f95f8349.tar.gz
scummvm-rg350-2e7b049e41eb02722d3daf518a8cfb83f95f8349.tar.bz2
scummvm-rg350-2e7b049e41eb02722d3daf518a8cfb83f95f8349.zip
SCI: check before writing 0 in SegManager::strncpy, fixes jones/cd crash
svn-id: r48519
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/engine/seg_manager.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp
index b02ed5083f..6a30d54ca4 100644
--- a/engines/sci/engine/seg_manager.cpp
+++ b/engines/sci/engine/seg_manager.cpp
@@ -635,6 +635,7 @@ void SegManager::strncpy(reg_t dest, const char* src, size_t n) {
return;
}
+
if (dest_r.isRaw) {
// raw -> raw
if (n == 0xFFFFFFFFU)
@@ -649,7 +650,8 @@ void SegManager::strncpy(reg_t dest, const char* src, size_t n) {
break;
}
// Put an ending NUL to terminate the string
- setChar(dest_r, n, 0);
+ if ((size_t)dest_r.maxSize > n)
+ setChar(dest_r, n, 0);
}
}