mirror of
https://github.com/github/codeql.git
synced 2026-04-29 18:55:14 +02:00
C++: Give Iterator a proper interface.
This commit is contained in:
@@ -48,10 +48,10 @@ private class StdIterator extends Class {
|
||||
}
|
||||
|
||||
/**
|
||||
* A type which can be used as an iterator
|
||||
* Implements `Iterator`.
|
||||
*/
|
||||
class Iterator extends Type {
|
||||
Iterator() {
|
||||
private class IteratorImpl extends Iterator {
|
||||
IteratorImpl() {
|
||||
this instanceof IteratorByTypedefs or
|
||||
exists(IteratorTraits it | it.getIteratorType() = this) or
|
||||
this instanceof StdIterator
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*/
|
||||
|
||||
import semmle.code.cpp.models.interfaces.Taint
|
||||
import semmle.code.cpp.models.implementations.Iterator
|
||||
import semmle.code.cpp.models.interfaces.Iterator
|
||||
|
||||
/**
|
||||
* Additional model for standard container constructors that reference the
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*/
|
||||
|
||||
import semmle.code.cpp.models.interfaces.Taint
|
||||
import semmle.code.cpp.models.implementations.Iterator
|
||||
import semmle.code.cpp.models.interfaces.Iterator
|
||||
|
||||
/**
|
||||
* Additional model for map constructors using iterator inputs.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*/
|
||||
|
||||
import semmle.code.cpp.models.interfaces.Taint
|
||||
import semmle.code.cpp.models.implementations.Iterator
|
||||
import semmle.code.cpp.models.interfaces.Iterator
|
||||
|
||||
/**
|
||||
* Additional model for set constructors using iterator inputs.
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
*/
|
||||
|
||||
import semmle.code.cpp.models.interfaces.Taint
|
||||
import semmle.code.cpp.models.implementations.Iterator
|
||||
import semmle.code.cpp.models.interfaces.Iterator
|
||||
import semmle.code.cpp.models.interfaces.DataFlow
|
||||
|
||||
/**
|
||||
* The `std::basic_string` template class.
|
||||
|
||||
@@ -26,3 +26,9 @@ abstract class GetIteratorFunction extends Function {
|
||||
*/
|
||||
abstract predicate getsIterator(FunctionInput input, FunctionOutput output);
|
||||
}
|
||||
|
||||
/**
|
||||
* A type which can be used as an iterator.
|
||||
*/
|
||||
abstract class Iterator extends Type {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user