void sal_dma_free(void *addr) { uint32 *p = (uint32 *)addr; /* * Verify sentinels on free. If this assertion fails, it means that * memory corruption was detected. */ /* coverity[conditional (1): FALSE] */ /* coverity[conditional (2): FALSE] */ assert(!BAD_PTR(p)); /* Use macro to beautify assert message */ /* coverity[conditional (3): FALSE] */ /* coverity[conditional (4): FALSE] */ assert(!CORRUPT(p)); /* Use macro to beautify assert message */ #ifdef BROADCOM_DEBUG #ifdef INCLUDE_BCM_SAL_PROFILE SAL_DMA_ALLOC_RESOURCE_USAGE_DECR( _sal_dma_alloc_curr, (p[-2] * 4), ilock); #endif #endif /* BROADCOM_DEBUG */ MEMLOG_FREE("sal_dma_free", &p[-2]); p[-1] = 0; /* Detect redundant frees */ /* coverity[address_free : FALSE] */ free(&p[-2]); }
void sal_free(void *addr) { uint32 *p = (uint32 *)addr; EXT_DEBUG_FREE(addr); /* * Verify sentinels on free. If this assertion fails, it means that * memory corruption was detected. */ #ifdef SAL_FREE_NULL_IGNORE if (addr == NULL) { return; } #endif AGGR_DEBUG_FREE(addr); if (BAD_PTR(p) || CORRUPT(p)) { AGGR_DEBUG_PRINT_BAD_ADDR(addr); assert(!BAD_PTR(p)); /* Use macro to beautify assert message */ assert(!CORRUPT(p)); /* Use macro to beautify assert message */ } sal_free_calls += 1; sal_free_bytes += p[-2] * 4; #ifdef BROADCOM_DEBUG #ifdef INCLUDE_BCM_SAL_PROFILE SAL_ALLOC_RESOURCE_USAGE_DECR( _sal_alloc_curr, (p[-2] * 4), ilock); #endif #endif /* BROADCOM_DEBUG */ MEMLOG_FREE("sal_free", &p[-2]); p[-1] = 0; /* Detect redundant frees */ /* coverity[address_free : FALSE] */ free(&p[-2]); }
BOOL GetTaskExpWinVer(HTASK hTask, LPWORD pwVer) { LPBYTE pTDB = LPBYTE(MAKELP(hTask, 0)); if (!BAD_PTR(pTDB, 0xfc) && pTDB[0xfa] == 'T' && pTDB[0xfb] == 'D' && (pTDB[0x16] & 0x10) == 0x00) // !Win32 task { *pwVer = MAKEWORD(pTDB[0x1a], pTDB[0x1b]); return (TRUE); } return (FALSE); }
BOOL GetModuleExpWinVer(HMODULE hModule, LPWORD pwVer) { hModule = GetExePtr(hModule); LPBYTE pMDB = LPBYTE(MAKELP(hModule, 0)); if (!BAD_PTR(pMDB, 0x40) && pMDB[0x00] == 'N' && pMDB[0x01] == 'E' && (pMDB[0x0c] & 0x10) == 0x00) // !Win32 module { *pwVer = MAKEWORD(pMDB[0x3e], pMDB[0x3f]); return (TRUE); } return (FALSE); }
BOOL SetModuleExpWinVer(HMODULE hModule, WORD wVer) { hModule = GetExePtr(hModule); LPBYTE pMDB = LPBYTE(MAKELP(hModule, 0)); if (!BAD_PTR(pMDB, 0x40) && pMDB[0x00] == 'N' && pMDB[0x01] == 'E' && (pMDB[0x0c] & 0x10) == 0x00) // !Win32 module { pMDB[0x3e] = LOBYTE(wVer); // minor pMDB[0x3f] = HIBYTE(wVer); // major return (TRUE); } return (FALSE); }
BOOL SetTaskExpWinVer(HTASK hTask, WORD wVer) { LPBYTE pTDB = LPBYTE(MAKELP(hTask, 0)); if (!BAD_PTR(pTDB, 0xfc) && pTDB[0xfa] == 'T' && pTDB[0xfb] == 'D' && (pTDB[0x16] & 0x10) == 0x00) // !Win32 task { WORD wSel = MAKEWORD(pTDB[0x20], pTDB[0x21]); if (SetQueueExpWinVer(HGLOBAL(wSel), wVer)) { pTDB[0x1a] = LOBYTE(wVer); // minor pTDB[0x1b] = HIBYTE(wVer); // major return (TRUE); } } return (FALSE); }
static BOOL SetQueueExpWinVer(HGLOBAL hQueue, WORD wVer) { LPBYTE pMQ = LPBYTE(MAKELP(hQueue, 0)); if (!BAD_PTR(pMQ, 0x44)) { if (IsWin95()) { pMQ[0x42] = LOBYTE(wVer); // minor pMQ[0x43] = HIBYTE(wVer); // major } else { pMQ[0x36] = LOBYTE(wVer); // minor pMQ[0x37] = HIBYTE(wVer); // major } return (TRUE); } return (FALSE); }