Skip to content

Commit 01bb0ab

Browse files
committed
C++: drive-by improvement: use non-extending subtyping.
1 parent 153fbb0 commit 01bb0ab

1 file changed

Lines changed: 9 additions & 12 deletions

File tree

  • cpp/ql/lib/semmle/code/cpp/models/implementations

cpp/ql/lib/semmle/code/cpp/models/implementations/Printf.qll

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ import semmle.code.cpp.models.interfaces.NonThrowing
1313
/**
1414
* The standard functions `printf`, `wprintf` and their glib variants.
1515
*/
16-
private class Printf extends FormattingFunction, AliasFunction, NonCppThrowingFunction {
16+
private class Printf extends FormattingFunction, AliasFunction, NonCppThrowingFunction instanceof TopLevelFunction
17+
{
1718
Printf() {
18-
this instanceof TopLevelFunction and
1919
(
2020
this.hasGlobalOrStdOrBslName(["printf", "wprintf"]) or
2121
this.hasGlobalName(["printf_s", "wprintf_s", "g_printf"])
@@ -37,9 +37,9 @@ private class Printf extends FormattingFunction, AliasFunction, NonCppThrowingFu
3737
/**
3838
* The standard functions `fprintf`, `fwprintf` and their glib variants.
3939
*/
40-
private class Fprintf extends FormattingFunction, NonCppThrowingFunction {
40+
private class Fprintf extends FormattingFunction, NonCppThrowingFunction instanceof TopLevelFunction
41+
{
4142
Fprintf() {
42-
this instanceof TopLevelFunction and
4343
(
4444
this.hasGlobalOrStdOrBslName(["fprintf", "fwprintf"]) or
4545
this.hasGlobalName("g_fprintf")
@@ -55,9 +55,9 @@ private class Fprintf extends FormattingFunction, NonCppThrowingFunction {
5555
/**
5656
* The standard function `sprintf` and its Microsoft and glib variants.
5757
*/
58-
private class Sprintf extends FormattingFunction, NonCppThrowingFunction {
58+
private class Sprintf extends FormattingFunction, NonCppThrowingFunction instanceof TopLevelFunction
59+
{
5960
Sprintf() {
60-
this instanceof TopLevelFunction and
6161
(
6262
this.hasGlobalOrStdOrBslName([
6363
"sprintf", // sprintf(dst, format, args...)
@@ -99,10 +99,9 @@ private class Sprintf extends FormattingFunction, NonCppThrowingFunction {
9999
* Implements `Snprintf`.
100100
*/
101101
private class SnprintfImpl extends Snprintf, AliasFunction, SideEffectFunction,
102-
NonCppThrowingFunction
102+
NonCppThrowingFunction instanceof TopLevelFunction
103103
{
104104
SnprintfImpl() {
105-
this instanceof TopLevelFunction and
106105
(
107106
this.hasGlobalOrStdOrBslName([
108107
"snprintf", // C99 defines snprintf
@@ -175,9 +174,8 @@ private class SnprintfImpl extends Snprintf, AliasFunction, SideEffectFunction,
175174
* and
176175
* https://learn.microsoft.com/en-us/previous-versions/windows/embedded/ms860435(v=msdn.10)
177176
*/
178-
private class StringCchPrintf extends FormattingFunction {
177+
private class StringCchPrintf extends FormattingFunction instanceof TopLevelFunction {
179178
StringCchPrintf() {
180-
this instanceof TopLevelFunction and
181179
exists(string baseName |
182180
baseName in [
183181
"StringCchPrintf", //StringCchPrintf(pszDest, cchDest, pszFormat, ...)
@@ -207,9 +205,8 @@ private class StringCchPrintf extends FormattingFunction {
207205
/**
208206
* The standard function `syslog`.
209207
*/
210-
private class Syslog extends FormattingFunction, NonCppThrowingFunction {
208+
private class Syslog extends FormattingFunction, NonCppThrowingFunction instanceof TopLevelFunction {
211209
Syslog() {
212-
this instanceof TopLevelFunction and
213210
this.hasGlobalName("syslog") and
214211
not exists(this.getDefinition().getFile().getRelativePath())
215212
}

0 commit comments

Comments
 (0)