Fixes a double-free and a 0-length memcpy() when a bad timestamp file encountered

git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@1797 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
avolkov
2005-05-17 05:09:26 +00:00
parent 3395bda99c
commit d2ffd850d2
+5 -2
View File
@@ -173,6 +173,7 @@ _GetStringData (uio_Stream *fp, DWORD length)
fprintf (stderr, "Invalid timestamp data "
"for '%s'. Disabling timestamps\n", s);
HFree (ts_data);
ts_data = NULL;
uio_fclose (timestamp_fp);
timestamp_fp = NULL;
TSOffs = 0;
@@ -260,8 +261,10 @@ _GetStringData (uio_Stream *fp, DWORD length)
strdata, StringOffs);
memcpy ((BYTE *)&lpST->StringOffsets[(n + 1) * num_data_sets]
+ StringOffs, clipdata, ClipOffs);
memcpy ((BYTE *)&lpST->StringOffsets[(n + 1) * num_data_sets]
+ StringOffs + ClipOffs, ts_data, TSOffs);
if (TSOffs)
memcpy ((BYTE *)&lpST->StringOffsets[
(n + 1) * num_data_sets] + StringOffs + ClipOffs,
ts_data, TSOffs);
TSOffs = ((BYTE *)&lpST->StringOffsets[(n + 1) * num_data_sets]
- (BYTE *)lpST) + StringOffs + ClipOffs;
ClipOffs = TSOffs - ClipOffs;