CodeQL library for C/C++
Search

Class StackVariableReachabilityWithReassignment

Reachability analysis for control-flow nodes involving stack variables. Unlike StackVariableReachability, this analysis takes variable reassignments into account.

This class is used like StackVariableReachability, except that subclasses should override isSourceActual and isSinkActual instead of isSource and isSink, and that there is a reachesTo predicate in addition to reaches.

Import path

import semmle.code.cpp.controlflow.StackVariableReachability

Direct supertypes

Indirect supertypes

Known direct subtypes

    Predicates

    isSink

    Holds if sink is a (potential) sink for the reachability analysis using variable v.

    isSinkActual

    Override this predicate rather than isSink (isSink is used internally).

    isSource

    Holds if node is a source for the reachability analysis using variable v.

    isSourceActual

    Override this predicate rather than isSource (isSource is used internally).

    reaches

    Holds if the source node source can reach the sink sink without crossing a barrier, taking reassignments into account. This is (almost) equivalent to the following QL predicate, but uses basic blocks internally for better performance:

    reachesTo

    As reaches, but also specifies the last variable it was reassigned to (v0).

    Inherited predicates

    charAt

    Returns a one-character string containing the character in the receiver at the given index (which ranges from 0 through length minus one)

    from string
    indexOf

    Returns all the offsets (starting at 0) at which the given string occurs in the receiver. Has no result if the string does not occur in the receiver.

    from string
    indexOf

    Returns the index of the n’th (starting at 0) occurrence of the given string within the receiver, starting at the given 0-based offset. Has no result if the string does not occur in the receiver.

    from string
    isBarrier

    Holds if node is a barrier for the reachability analysis using variable v.

    from StackVariableReachability
    isLowercase

    Holds when the receiver contains no upper-case letters. This includes the case where the receiver contains no letters at all, for example, if it’s an empty string or only consists of non-letter symbols.

    from string
    isUppercase

    Holds when the receiver contains no lower-case letters. This includes the case where the receiver contains no letters at all, for example, if it’s an empty string or only consists of non-letter symbols.

    from string
    length

    Returns the length of the receiver (in UTF-16 code units)

    from string
    matches

    Holds when the receiver matches the pattern. Patterns are matched by case sensitive string matching, and there are two wildcards: _ matches a single character, and % matches any sequence of characters. To match the actual characters _ or % in the pattern, they must be escaped using backslashes. For example, "anythingstring%".matches("%string\\%") holds. To match a literal backslash in front of _ or %, you must escape the backslash. In other cases, you don’t need to escape the backslash.

    from string
    prefix

    Returns the substring of the receiver ending at the given 0-based exclusive offset

    from string
    regexpCapture

    When the given regular expression matches the entire receiver, returns the substring matched by the given capture group (starting at 1). The regex format used is Java’s Pattern.

    from string
    regexpFind

    Returns a substring of the receiver which matches the given regular expression. Also returns the offset within the receiver (starting at 0) at which the match occurred (occurrenceOffset), and the number of matches which occur at smaller offsets (occurrenceIndex). The regex format used is Java’s Pattern.

    from string
    regexpMatch

    Holds when the given regular expression matches the entire receiver. The regex format used is Java’s Pattern.

    from string
    regexpReplaceAll

    Returns a copy of the receiver with every substring which matches the given regular expression is replaced by the replacement. The regex format used is Java’s Pattern. The replacement string can contain references to captured groups as described in Java’s appendReplacement docs.

    from string
    replaceAll

    Returns a copy of the receiver with all occurrences of the target replaced by the replacement

    from string
    splitAt

    Returns all the substrings obtained by splitting the receiver at every occurrence of the argument. Trailing empty substrings are omitted. Splitting at an empty string returns all the characters that the receiver consists of.

    from string
    splitAt

    Returns the n’th (starting at 0) substring obtained by splitting the receiver at every occurrence of the argument. Trailing empty substrings are omitted. Splitting at an empty string returns all the characters that the receiver consists of.

    from string
    substring

    Returns the substring of the receiver which starts and ends at the given indices. Both indices are 0-based. The start index is inclusive and the end index is exclusive.

    from string
    suffix

    Returns the substring of the receiver starting at the given 0-based inclusive offset

    from string
    toDate

    Returns the date, if any, obtained by parsing the receiver. The recognized formats are described in the documentation.

    from string
    toFloat

    Returns the 64-bit floating point number, if any, obtained by parsing the receiver. The parsing rules are described in Java’s valueOf docs.

    from string
    toInt

    Returns the 32-bit signed integer, if any, obtained by parsing the receiver. The number may consist of an optional leading + or -, followed by one or more digits. Has no result if the value exceeds the value range supported by the int type.

    from string
    toLowerCase

    Returns a copy of the receiver with all uppercase characters replaced by lowercase ones according to Unicode case conversion rules.

    from string
    toString

    Returns the receiver

    from string
    toUpperCase

    Returns a copy of the receiver with all lowercase characters replaced by uppercase ones according to Unicode case conversion rules.

    from string
    trim

    Returns a copy of the receiver with all whitespace removed from the beginning and end of the string (where whitespace is defined as Unicode code points ‘\u0000’ through ‘\u0020’ inclusive)

    from string

    Charpred