|
|
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.