Skip to content

Commit 01ad93d

Browse files
committed
C#: Fix for false positive.
1 parent ee7cf17 commit 01ad93d

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,16 @@ private class Conf extends DataFlow::Configuration {
5454
)
5555
or
5656
// A disposing method
57-
exists(Call c, Parameter p | e = c.getArgumentForParameter(p) | mayBeDisposed(p))
57+
exists(Call c, Parameter p |
58+
e = c.getArgumentForParameter(p)
59+
or
60+
// e.g `Stream.Create(input ?? new TextReader())`
61+
exists(NullCoalescingExpr nce |
62+
nce = c.getArgumentForParameter(p) and e = nce.getRightOperand()
63+
)
64+
|
65+
mayBeDisposed(p)
66+
)
5867
or
5968
// Things that are assigned to fields, properties, or indexers may be disposed
6069
exists(AssignableDefinition def, Assignable a |

csharp/ql/test/query-tests/API Abuse/NoDisposeCallOnLocalIDisposable/NoDisposeCallOnLocalIDisposable.expected

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,4 @@
22
| NoDisposeCallOnLocalIDisposable.cs:53:18:53:73 | object creation of type FileStream | Disposable 'FileStream' is created here but is not disposed. |
33
| NoDisposeCallOnLocalIDisposable.cs:54:9:54:64 | object creation of type FileStream | Disposable 'FileStream' is created here but is not disposed. |
44
| NoDisposeCallOnLocalIDisposable.cs:76:25:76:71 | call to method Create | Disposable 'XmlReader' is created here but is not disposed. |
5-
| NoDisposeCallOnLocalIDisposable.cs:88:42:88:64 | object creation of type StringReader | Disposable 'StringReader' is created here but is not disposed. |
65
| NoDisposeCallOnLocalIDisposableBad.cs:8:22:8:56 | object creation of type FileStream | Disposable 'FileStream' is created here but is not disposed. |

0 commit comments

Comments
 (0)