diff options
| author | Paul Buetow <paul@buetow.org> | 2025-03-16 23:54:19 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-03-16 23:54:19 +0200 |
| commit | b13244e65bace6c2c56a052d69a31b44b67effa3 (patch) | |
| tree | 895e5c2a90ca733b39449befe3935a38f2bc47dc /internal/file/flags.go | |
| parent | 538ada4586285e21345dabe6421b8296b3e4a165 (diff) | |
correctly trace flags for open and openat syscalls
Diffstat (limited to 'internal/file/flags.go')
| -rw-r--r-- | internal/file/flags.go | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/internal/file/flags.go b/internal/file/flags.go index 5702dad..002de9c 100644 --- a/internal/file/flags.go +++ b/internal/file/flags.go @@ -2,6 +2,7 @@ package file import ( "fmt" + "os" "strings" "syscall" ) @@ -17,6 +18,9 @@ type tuple struct { } var flagsToHuman = []tuple{ + {syscall.O_RDONLY, "O_RDONLY"}, + {syscall.O_WRONLY, "O_WRONLY"}, + {syscall.O_RDWR, "O_RDWR"}, {syscall.O_ACCMODE, "O_ACCMODE"}, {syscall.O_APPEND, "O_APPEND"}, {syscall.O_ASYNC, "O_ASYNC"}, @@ -30,11 +34,8 @@ var flagsToHuman = []tuple{ {syscall.O_NOCTTY, "O_NOCTTY"}, {syscall.O_NOFOLLOW, "O_NOFOLLOW"}, {syscall.O_NONBLOCK, "O_NONBLOCK"}, - {syscall.O_RDONLY, "O_RDONLY"}, - {syscall.O_RDWR, "O_RDWR"}, {syscall.O_SYNC, "O_SYNC"}, {syscall.O_TRUNC, "O_TRUNC"}, - {syscall.O_WRONLY, "O_WRONLY"}, } func flagsToStr(flags int32) string { @@ -47,7 +48,11 @@ func flagsToStr(flags int32) string { } func flagsToStrs(flags int32) (result []string) { - for _, toHuman := range flagsToHuman { + if int(flags)&(os.O_WRONLY|os.O_RDWR) == 0 { + // Must be read only then + result = append(result, "O_RDONLY") + } + for _, toHuman := range flagsToHuman[1:] { if int(flags)&toHuman.syscallNr == toHuman.syscallNr { result = append(result, toHuman.str) } |
