|
|
1.1 root 1: /****************************** Module Header ******************************\
2: * Module Name: spyutil.c
3: *
4: * Created: Microsoft, IBM Corporation 1990
5: *
6: \***************************************************************************/
7:
8: #include <os2.h>
9:
10: BOOL FGuessValidPointer (PVOID pvoid, SHORT cbStruct, ULONG ulMemFlags) {
11:
12: ULONG ulSize = (ULONG)cbStruct;
13: ULONG ulFlags;
14:
15: if (DosQueryMem(pvoid, &ulSize, &ulFlags) != 0)
16: return (FALSE); // Not valid memory
17:
18: if (ulSize < (ULONG)cbStruct)
19: return (FALSE);
20:
21: // Make sure right flags are set
22: if ((ulFlags & ulMemFlags) != ulMemFlags)
23: return (FALSE);
24:
25: // Not perfect, but maybe sufficent for now to say it is valid!
26: return (TRUE);
27: }
28:
29: BOOL CopyStruct(UCHAR *pbSrc, UCHAR *pbDst, SHORT cb)
30: {
31:
32: // For now simply make sure both source and destination pointers
33: // appear to be valid
34: if (!FGuessValidPointer(pbSrc, cb, PAG_READ) ||
35: !FGuessValidPointer(pbDst, cb, PAG_READ | PAG_WRITE))
36: return (FALSE);
37:
38: for (; cb > 0 ; cb--) {
39: *pbDst++ = *pbSrc++;
40: }
41:
42: return (TRUE);
43: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.