Last active
April 10, 2023 19:08
-
-
Save appgurueu/21132254211f32fb210c429cf56c4b2b to your computer and use it in GitHub Desktop.
Lua 5.1 vs LuaJIT Lua 5.2 compatibility semgrep rules
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Rules for programs which must run under both LuaJIT and PUC Lua 5.1 | |
# and which thus may not rely on the 5.2 LuaJIT compatibility features | |
# See http://luajit.org/extensions.html | |
rules: | |
- id: xpcall-args | |
pattern-either: | |
# theoretically could be fine e.g. if (empty vararg!), but practically never is | |
- pattern: xpcall($FN, $ERRHAND, $EXP, ...) | |
# the following could also theoretically be fine, but practically are a major code smell | |
- pattern: xpcall($FN1, $FN2(...)) | |
- pattern: xpcall($FN(...)) | |
message: "Arguments passed to `xpcall` will be ignored by Lua 5.1" | |
languages: [lua] | |
severity: ERROR | |
- id: goto-labels | |
pattern-either: | |
- pattern: "goto $LABEL" | |
- pattern: "::$LABEL::" | |
message: "Goto & labels don't exist in Lua 5.1" | |
languages: [lua] | |
severity: ERROR | |
- id: log-with-base | |
pattern: math.log($X, $BASE) | |
message: "Lua 5.1 doesn't support a base for logarithms" | |
languages: [lua] | |
severity: ERROR | |
- id: rep-with-sep | |
pattern: string.rep($STR, $N, $SEP) | |
message: "Lua 5.1 doesn't support a seperator for `string.rep`" | |
languages: [lua] | |
severity: ERROR |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment