Warn about invalid arguments to sudo

This commit is contained in:
Stefan Knudsen 2018-04-27 19:05:43 -04:00
parent 12b3fdf661
commit 5adfce72e1
2 changed files with 18 additions and 0 deletions

View File

@ -1,5 +1,6 @@
## Latest - ??? ## Latest - ???
### Added ### Added
- SC2232: Warn about invalid arguments to sudo
- SC2231: Suggest quoting expansions in for loop globs - SC2231: Suggest quoting expansions in for loop globs
- SC2229: Warn about 'read $var' - SC2229: Warn about 'read $var'
- SC2227: Warn about redirections in the middle of 'find' commands - SC2227: Warn about redirections in the middle of 'find' commands

View File

@ -121,6 +121,7 @@ nodeChecks = [
,checkTestRedirects ,checkTestRedirects
,checkIndirectExpansion ,checkIndirectExpansion
,checkSudoRedirect ,checkSudoRedirect
,checkSudoArgs
,checkPS1Assignments ,checkPS1Assignments
,checkBackticks ,checkBackticks
,checkInexplicablyUnquoted ,checkInexplicablyUnquoted
@ -1306,6 +1307,22 @@ checkSudoRedirect _ (T_Redirecting _ redirs cmd) | cmd `isCommand` "sudo" =
special file = concat (oversimplify file) == "/dev/null" special file = concat (oversimplify file) == "/dev/null"
checkSudoRedirect _ _ = return () checkSudoRedirect _ _ = return ()
prop_checkSudoArgs1 = verify checkSudoArgs "sudo cd /root"
prop_checkSudoArgs2 = verify checkSudoArgs "sudo export x=3"
prop_checkSudoArgs3 = verifyNot checkSudoArgs "sudo ls /usr/local/protected"
prop_checkSudoArgs4 = verifyNot checkSudoArgs "sudo ls && export x=3"
prop_checkSudoArgs5 = verifyNot checkSudoArgs "sudo echo ls"
checkSudoArgs _ t@(T_SimpleCommand _ _ (_:rest))
| t `isCommand` "sudo" = checkArgs args
where checkArgs (x:xs)
| x `elem` prohibitedArguments = warn (getId t) 2232 $ "Can't use sudo with " ++ x
| x `elem` commonCommands = return ()
| otherwise = checkArgs xs
checkArgs [] = return ()
args = map onlyLiteralString $ concat $ map getWordParts rest
prohibitedArguments = ["cd", "export"]
checkSudoArgs _ _ = return ()
prop_checkPS11 = verify checkPS1Assignments "PS1='\\033[1;35m\\$ '" prop_checkPS11 = verify checkPS1Assignments "PS1='\\033[1;35m\\$ '"
prop_checkPS11a= verify checkPS1Assignments "export PS1='\\033[1;35m\\$ '" prop_checkPS11a= verify checkPS1Assignments "export PS1='\\033[1;35m\\$ '"
prop_checkPSf2 = verify checkPS1Assignments "PS1='\\h \\e[0m\\$ '" prop_checkPSf2 = verify checkPS1Assignments "PS1='\\h \\e[0m\\$ '"