commit - 5efbf02cf0e5885214afebbd9592ed1f9b039233
commit + 2cb7d3edd285db3948c1bfea4ecb3bf661b0f571
blob - /dev/null
blob + 16b95868afc6241455385e2872bc024573dc5688 (mode 644)
--- /dev/null
+++ rules/lua/basic/writing_to_file_in_read_mode.lua
+local fh
+fh = io.open("example.txt", "w")
+-- ok: writing_to_file_in_read_mode
+fh:write("I'm writable!")
+fh.close()
+
+fh = io.open("example.txt", "r")
+-- ruleid: writing_to_file_in_read_mode
+fh:write("whoops, I'm not writable!")
+fh:close()
+
+fh = io.open("example.txt", "rb")
+-- ruleid: writing_to_file_in_read_mode
+fh:write("whoops, I'm not writable!")
+fh:close()
blob - /dev/null
blob + 2a8977403d062bce79f2de71df483339e6b510f0 (mode 644)
--- /dev/null
+++ rules/lua/basic/writing_to_file_in_read_mode.yaml
+rules:
+ - id: writing_to_file_in_read_mode
+ patterns:
+ - pattern: |
+ $FD = io.open($NAME, $MODE)
+ ...
+ $FD:write(...)
+ - metavariable-pattern:
+ metavariable: $MODE
+ pattern-regex: "r"
+ message: |
+ The file object "$FD" was opened in read mode, but is being
+ written to. This will cause a runtime error.
+ severity: ERROR
+ languages: [lua]