diff --git a/cpp/ql/src/semmle/code/cpp/models/interfaces/SideEffect.qll b/cpp/ql/src/semmle/code/cpp/models/interfaces/SideEffect.qll index e13123d1025..cc69365d8af 100644 --- a/cpp/ql/src/semmle/code/cpp/models/interfaces/SideEffect.qll +++ b/cpp/ql/src/semmle/code/cpp/models/interfaces/SideEffect.qll @@ -29,12 +29,24 @@ abstract class SideEffectFunction extends Function { */ abstract predicate hasOnlySpecificWriteSideEffects(); + /** + * Holds if the value pointed to by the parameter at index `i` is written to. `buffer` is true + * if the write may be at an offset. `mustWrite` is true if the write is unconditional. + */ predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) { none() } + /** + * Holds if the value pointed to by the parameter at index `i` is read from. `buffer` is true + * if the read may be at an offset. + */ predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) { none() } // TODO: name? + /** + * Gets the index of the parameter that indicates the size of the buffer pointed to by the + * parameter at index `i`. + */ ParameterIndex getParameterSizeIndex(ParameterIndex i) { none() } }