mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
Convert to inline expectations test
This commit is contained in:
@@ -1,2 +1,4 @@
|
||||
query: InconsistentCode/UnhandledCloseWritableHandle.ql
|
||||
postprocess: utils/test/PrettyPrintModels.ql
|
||||
postprocess:
|
||||
- utils/test/PrettyPrintModels.ql
|
||||
- utils/test/InlineExpectationsTestQuery.ql
|
||||
|
||||
@@ -6,12 +6,12 @@ import (
|
||||
)
|
||||
|
||||
func closeFileDeferred(f *os.File) {
|
||||
defer f.Close() // NOT OK, if `f` is writable
|
||||
defer f.Close() // $ Alert=w Alert=rw
|
||||
}
|
||||
|
||||
func closeFileDeferredIndirect(f *os.File) {
|
||||
var cont = func() {
|
||||
f.Close() // NOT OK, if `f` is writable
|
||||
f.Close() // $ Alert=w Alert=rw
|
||||
}
|
||||
|
||||
defer cont()
|
||||
@@ -28,7 +28,7 @@ func closeFileDeferredIndirectReturn(f *os.File) {
|
||||
|
||||
func deferredCalls() {
|
||||
// open file for writing
|
||||
if f, err := os.OpenFile("foo.txt", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0666); err != nil {
|
||||
if f, err := os.OpenFile("foo.txt", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0666); err != nil { // $ Source=w
|
||||
closeFileDeferred(f) // NOT OK
|
||||
closeFileDeferredIndirect(f) // NOT OK
|
||||
closeFileDeferredIndirectReturn(f) // OK - the error is not discarded at the call to Close (though it is discarded later)
|
||||
@@ -42,7 +42,7 @@ func deferredCalls() {
|
||||
}
|
||||
|
||||
// open file for reading and writing
|
||||
if f, err := os.OpenFile("foo.txt", os.O_RDWR|os.O_TRUNC|os.O_CREATE, 0666); err != nil {
|
||||
if f, err := os.OpenFile("foo.txt", os.O_RDWR|os.O_TRUNC|os.O_CREATE, 0666); err != nil { // $ Source=rw
|
||||
closeFileDeferred(f) // NOT OK
|
||||
closeFileDeferredIndirect(f) // NOT OK
|
||||
closeFileDeferredIndirectReturn(f) // OK - the error is not discarded at the call to Close (though it is discarded later)
|
||||
@@ -51,9 +51,9 @@ func deferredCalls() {
|
||||
|
||||
func notDeferred() {
|
||||
// open file for writing
|
||||
if f, err := os.OpenFile("foo.txt", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0666); err != nil {
|
||||
if f, err := os.OpenFile("foo.txt", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0666); err != nil { // $ Source
|
||||
// the handle is write-only and we don't check if `Close` succeeds
|
||||
f.Close() // NOT OK
|
||||
f.Close() // $ Alert
|
||||
}
|
||||
|
||||
// open file for reading
|
||||
@@ -63,9 +63,9 @@ func notDeferred() {
|
||||
}
|
||||
|
||||
// open file for reading and writing
|
||||
if f, err := os.OpenFile("foo.txt", os.O_RDWR|os.O_TRUNC|os.O_CREATE, 0666); err != nil {
|
||||
if f, err := os.OpenFile("foo.txt", os.O_RDWR|os.O_TRUNC|os.O_CREATE, 0666); err != nil { // $ Source
|
||||
// the handle is read-write and we don't check if `Close` succeeds
|
||||
f.Close() // NOT OK
|
||||
f.Close() // $ Alert
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,9 +105,9 @@ func deferredCloseWithSync() {
|
||||
|
||||
func deferredCloseWithSyncEarlyReturn(n int) {
|
||||
// open file for writing
|
||||
if f, err := os.OpenFile("foo.txt", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0666); err != nil {
|
||||
if f, err := os.OpenFile("foo.txt", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0666); err != nil { // $ Source
|
||||
// a call to `Close` is deferred
|
||||
defer f.Close() // NOT OK
|
||||
defer f.Close() // $ Alert
|
||||
|
||||
if n > 100 {
|
||||
return
|
||||
@@ -122,10 +122,10 @@ func deferredCloseWithSyncEarlyReturn(n int) {
|
||||
|
||||
func unhandledSync() {
|
||||
// open file for writing
|
||||
if f, err := os.OpenFile("foo.txt", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0666); err != nil {
|
||||
if f, err := os.OpenFile("foo.txt", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0666); err != nil { // $ Source
|
||||
// we have a call to `Sync` which precedes the call to `Close`, but there is no check
|
||||
// to see if `Sync` may have failed
|
||||
f.Sync()
|
||||
f.Close() // NOT OK
|
||||
f.Close() // $ Alert
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user