mirror of
https://github.com/github/codeql.git
synced 2026-04-29 18:55:14 +02:00
Merge pull request #1158 from geoffw0/moremsalloc
CPP: Add more allocation functions to Alloc.qll
This commit is contained in:
@@ -12,6 +12,8 @@
|
||||
| **Query** | **Expected impact** | **Change** |
|
||||
|----------------------------|------------------------|------------------------------------------------------------------|
|
||||
| Mismatching new/free or malloc/delete (`cpp/new-free-mismatch`) | Fewer false positive results | Fixed an issue where functions were being identified as allocation functions inappropriately. Also affects `cpp/new-array-delete-mismatch` and `cpp/new-delete-array-mismatch`. |
|
||||
| Memory may not be freed (`cpp/memory-may-not-be-freed`) | More correct results | Support added for more Microsoft-specific allocation functions, including `LocalAlloc`, `GlobalAlloc`, `HeapAlloc` and `CoTaskMemAlloc`. |
|
||||
| Memory is never freed (`cpp/memory-never-freed`) | More correct results | Support added for more Microsoft-specific allocation functions, including `LocalAlloc`, `GlobalAlloc`, `HeapAlloc` and `CoTaskMemAlloc`. |
|
||||
| Resource not released in destructor (`cpp/resource-not-released-in-destructor`) | Fewer false positive results | Resource allocation and deallocation functions are now determined more accurately. |
|
||||
|
||||
## Changes to QL libraries
|
||||
|
||||
@@ -39,7 +39,16 @@ predicate allocationFunction(Function f)
|
||||
name = "MmAllocateNodePagesForMdlEx" or
|
||||
name = "MmMapLockedPagesWithReservedMapping" or
|
||||
name = "MmMapLockedPages" or
|
||||
name = "MmMapLockedPagesSpecifyCache"
|
||||
name = "MmMapLockedPagesSpecifyCache" or
|
||||
name = "LocalAlloc" or
|
||||
name = "LocalReAlloc" or
|
||||
name = "GlobalAlloc" or
|
||||
name = "GlobalReAlloc" or
|
||||
name = "HeapAlloc" or
|
||||
name = "HeapReAlloc" or
|
||||
name = "VirtualAlloc" or
|
||||
name = "CoTaskMemAlloc" or
|
||||
name = "CoTaskMemRealloc"
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -81,7 +90,17 @@ predicate freeFunction(Function f, int argNum)
|
||||
(name = "MmFreeMappingAddress" and argNum = 0) or
|
||||
(name = "MmFreePagesFromMdl" and argNum = 0) or
|
||||
(name = "MmUnmapReservedMapping" and argNum = 0) or
|
||||
(name = "MmUnmapLockedPages" and argNum = 0)
|
||||
(name = "MmUnmapLockedPages" and argNum = 0) or
|
||||
(name = "LocalFree" and argNum = 0) or
|
||||
(name = "GlobalFree" and argNum = 0) or
|
||||
(name = "HeapFree" and argNum = 2) or
|
||||
(name = "VirtualFree" and argNum = 0) or
|
||||
(name = "CoTaskMemFree" and argNum = 0) or
|
||||
(name = "SysFreeString" and argNum = 0) or
|
||||
(name = "LocalReAlloc" and argNum = 0) or
|
||||
(name = "GlobalReAlloc" and argNum = 0) or
|
||||
(name = "HeapReAlloc" and argNum = 2) or
|
||||
(name = "CoTaskMemRealloc" and argNum = 0)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user