mirror of
https://github.com/github/codeql.git
synced 2025-12-24 04:36:35 +01:00
CPP: Add a test demonstating when a deallocator call exists.
This commit is contained in:
@@ -34,11 +34,11 @@ newArrayExprDeallocators
|
|||||||
| allocators.cpp:108:3:108:19 | new[] | FailedInit | void FailedInit::operator delete[](void*, size_t) | 1 | 1 | sized |
|
| allocators.cpp:108:3:108:19 | new[] | FailedInit | void FailedInit::operator delete[](void*, size_t) | 1 | 1 | sized |
|
||||||
| allocators.cpp:110:3:110:37 | new[] | FailedInitOveraligned | void FailedInitOveraligned::operator delete[](void*, std::align_val_t, float) | 128 | 128 | aligned |
|
| allocators.cpp:110:3:110:37 | new[] | FailedInitOveraligned | void FailedInitOveraligned::operator delete[](void*, std::align_val_t, float) | 128 | 128 | aligned |
|
||||||
deleteExprs
|
deleteExprs
|
||||||
| allocators.cpp:59:3:59:35 | delete | int | void operator delete(void*, unsigned long) | 4 | 4 | sized |
|
| allocators.cpp:59:3:59:35 | delete | int | void operator delete(void*, unsigned long) | 4 | 4 | sized | false |
|
||||||
| allocators.cpp:60:3:60:38 | delete | String | void operator delete(void*, unsigned long) | 8 | 8 | sized |
|
| allocators.cpp:60:3:60:38 | delete | String | void operator delete(void*, unsigned long) | 8 | 8 | sized | false |
|
||||||
| allocators.cpp:61:3:61:44 | delete | SizedDealloc | void SizedDealloc::operator delete(void*, size_t) | 32 | 1 | sized |
|
| allocators.cpp:61:3:61:44 | delete | SizedDealloc | void SizedDealloc::operator delete(void*, size_t) | 32 | 1 | sized | true |
|
||||||
| allocators.cpp:62:3:62:43 | delete | Overaligned | void operator delete(void*, unsigned long, std::align_val_t) | 256 | 128 | sized aligned |
|
| allocators.cpp:62:3:62:43 | delete | Overaligned | void operator delete(void*, unsigned long, std::align_val_t) | 256 | 128 | sized aligned | false |
|
||||||
| allocators.cpp:64:3:64:44 | delete | const String | void operator delete(void*, unsigned long) | 8 | 8 | sized |
|
| allocators.cpp:64:3:64:44 | delete | const String | void operator delete(void*, unsigned long) | 8 | 8 | sized | false |
|
||||||
deleteArrayExprs
|
deleteArrayExprs
|
||||||
| allocators.cpp:78:3:78:37 | delete[] | int | void operator delete[](void*, unsigned long) | 4 | 4 | sized |
|
| allocators.cpp:78:3:78:37 | delete[] | int | void operator delete[](void*, unsigned long) | 4 | 4 | sized |
|
||||||
| allocators.cpp:79:3:79:40 | delete[] | String | void operator delete[](void*, unsigned long) | 8 | 8 | sized |
|
| allocators.cpp:79:3:79:40 | delete[] | String | void operator delete[](void*, unsigned long) | 8 | 8 | sized |
|
||||||
|
|||||||
@@ -77,7 +77,8 @@ query predicate newArrayExprDeallocators(
|
|||||||
}
|
}
|
||||||
|
|
||||||
query predicate deleteExprs(
|
query predicate deleteExprs(
|
||||||
DeleteExpr expr, string type, string sig, int size, int alignment, string form
|
DeleteExpr expr, string type, string sig, int size, int alignment, string form,
|
||||||
|
boolean hasDeallocatorCall
|
||||||
) {
|
) {
|
||||||
exists(Function deallocator, Type deletedType |
|
exists(Function deallocator, Type deletedType |
|
||||||
expr.getDeallocator() = deallocator and
|
expr.getDeallocator() = deallocator and
|
||||||
@@ -90,7 +91,10 @@ query predicate deleteExprs(
|
|||||||
(if expr.hasAlignedDeallocation() then aligned = "aligned" else aligned = "") and
|
(if expr.hasAlignedDeallocation() then aligned = "aligned" else aligned = "") and
|
||||||
(if expr.hasSizedDeallocation() then sized = "sized" else sized = "") and
|
(if expr.hasSizedDeallocation() then sized = "sized" else sized = "") and
|
||||||
form = sized + " " + aligned
|
form = sized + " " + aligned
|
||||||
)
|
) and
|
||||||
|
if exists(expr.getDeallocatorCall())
|
||||||
|
then hasDeallocatorCall = true
|
||||||
|
else hasDeallocatorCall = false
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user