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:
@@ -173,6 +173,7 @@ _GetStringData (uio_Stream *fp, DWORD length)
|
|||||||
fprintf (stderr, "Invalid timestamp data "
|
fprintf (stderr, "Invalid timestamp data "
|
||||||
"for '%s'. Disabling timestamps\n", s);
|
"for '%s'. Disabling timestamps\n", s);
|
||||||
HFree (ts_data);
|
HFree (ts_data);
|
||||||
|
ts_data = NULL;
|
||||||
uio_fclose (timestamp_fp);
|
uio_fclose (timestamp_fp);
|
||||||
timestamp_fp = NULL;
|
timestamp_fp = NULL;
|
||||||
TSOffs = 0;
|
TSOffs = 0;
|
||||||
@@ -260,8 +261,10 @@ _GetStringData (uio_Stream *fp, DWORD length)
|
|||||||
strdata, StringOffs);
|
strdata, StringOffs);
|
||||||
memcpy ((BYTE *)&lpST->StringOffsets[(n + 1) * num_data_sets]
|
memcpy ((BYTE *)&lpST->StringOffsets[(n + 1) * num_data_sets]
|
||||||
+ StringOffs, clipdata, ClipOffs);
|
+ StringOffs, clipdata, ClipOffs);
|
||||||
memcpy ((BYTE *)&lpST->StringOffsets[(n + 1) * num_data_sets]
|
if (TSOffs)
|
||||||
+ StringOffs + ClipOffs, ts_data, TSOffs);
|
memcpy ((BYTE *)&lpST->StringOffsets[
|
||||||
|
(n + 1) * num_data_sets] + StringOffs + ClipOffs,
|
||||||
|
ts_data, TSOffs);
|
||||||
TSOffs = ((BYTE *)&lpST->StringOffsets[(n + 1) * num_data_sets]
|
TSOffs = ((BYTE *)&lpST->StringOffsets[(n + 1) * num_data_sets]
|
||||||
- (BYTE *)lpST) + StringOffs + ClipOffs;
|
- (BYTE *)lpST) + StringOffs + ClipOffs;
|
||||||
ClipOffs = TSOffs - ClipOffs;
|
ClipOffs = TSOffs - ClipOffs;
|
||||||
|
|||||||
Reference in New Issue
Block a user