File tree Expand file tree Collapse file tree 1 file changed +6
-3
lines changed
Expand file tree Collapse file tree 1 file changed +6
-3
lines changed Original file line number Diff line number Diff line change @@ -156,7 +156,7 @@ BOOL MMCMP_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength)
156156{
157157 DWORD dwMemLength;
158158 LPCBYTE lpMemFile;
159- LPBYTE pBuffer;
159+ LPBYTE pBuffer, pEnd ;
160160 LPMMCMPFILEHEADER pmfh;
161161 LPMMCMPHEADER pmmh;
162162 const DWORD *pblk_table;
@@ -186,6 +186,7 @@ BOOL MMCMP_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength)
186186 dwFileSize = pmmh->filesize ;
187187 if ((pBuffer = (LPBYTE)GlobalAllocPtr (GHND, (dwFileSize + 31 ) & ~15 )) == NULL )
188188 return FALSE ;
189+ pEnd = pBuffer + dwFileSize;
189190 pblk_table = (const DWORD *)(lpMemFile+pmmh->blktable );
190191 for (UINT nBlock=0 ; nBlock<pmmh->nblocks ; nBlock++)
191192 {
@@ -302,8 +303,10 @@ BOOL MMCMP_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength)
302303 {
303304 newval ^= 0x8000 ;
304305 }
305- pDest[dwPos++] = (BYTE) (((WORD)newval) & 0xff );
306- pDest[dwPos++] = (BYTE) (((WORD)newval) >> 8 );
306+ if (pEnd - pDest < 2 ) goto err;
307+ dwPos += 2 ;
308+ *pDest++ = (BYTE) (((WORD)newval) & 0xff );
309+ *pDest++ = (BYTE) (((WORD)newval) >> 8 );
307310 }
308311 if (dwPos >= dwSize)
309312 {
You can’t perform that action at this time.
0 commit comments