-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c91c435
commit 7705ba2
Showing
25 changed files
with
391 additions
and
15 deletions.
There are no files selected for viewing
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# ok | ||
with open("/abc/tmp", "w") as f: | ||
f.write("def") | ||
|
||
with open("/tmp/abc", "w") as f: | ||
f.write("def") | ||
|
||
with open("/var/tmp/123", "w") as f: | ||
f.write("def") | ||
|
||
with open("/dev/shm/unit/test", "w") as f: | ||
f.write("def") | ||
|
||
# not ok by config | ||
with open("/foo/bar", "w") as f: | ||
f.write("def") |
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
use rustpython_ast::Expr; | ||
|
||
use crate::ast::types::Range; | ||
use crate::registry::{Check, CheckKind}; | ||
|
||
/// S108 | ||
pub fn hardcoded_tmp_dir<'a>( | ||
expr: &Expr, | ||
value: &str, | ||
prefixes: &mut impl Iterator<Item = &'a String>, | ||
) -> Option<Check> { | ||
if prefixes.any(|prefix| value.starts_with(prefix)) { | ||
Some(Check::new( | ||
CheckKind::HardcodedTempFile(value.to_string()), | ||
Range::from_located(expr), | ||
)) | ||
} else { | ||
None | ||
} | ||
} |
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
//! Settings for the `flake8-bandit` plugin. | ||
use ruff_macros::ConfigurationOptions; | ||
use schemars::JsonSchema; | ||
use serde::{Deserialize, Serialize}; | ||
|
||
fn default_tmp_dirs() -> Vec<String> { | ||
["/tmp", "/var/tmp", "/dev/shm"] | ||
.map(std::string::ToString::to_string) | ||
.to_vec() | ||
} | ||
|
||
#[derive( | ||
Debug, PartialEq, Eq, Serialize, Deserialize, Default, ConfigurationOptions, JsonSchema, | ||
)] | ||
#[serde( | ||
deny_unknown_fields, | ||
rename_all = "kebab-case", | ||
rename = "Flake8BanditOptions" | ||
)] | ||
pub struct Options { | ||
#[option( | ||
default = "[\"/tmp\", \"/var/tmp\", \"/dev/shm\"]", | ||
value_type = "Vec<String>", | ||
example = "hardcoded_tmp_directory = [\"/foo/bar\"]" | ||
)] | ||
/// List of directories that are considered temporary. | ||
pub hardcoded_tmp_directory: Option<Vec<String>>, | ||
#[option( | ||
default = "[]", | ||
value_type = "Vec<String>", | ||
example = "extend_hardcoded_tmp_directory = [\"/foo/bar\"]" | ||
)] | ||
/// List of directories that are considered temporary. | ||
/// These directories are added to the list in | ||
/// `hardcoded_tmp_directory`. | ||
pub hardcoded_tmp_directory_extend: Option<Vec<String>>, | ||
} | ||
|
||
#[derive(Debug, Hash)] | ||
pub struct Settings { | ||
pub hardcoded_tmp_directory: Vec<String>, | ||
pub hardcoded_tmp_directory_extend: Vec<String>, | ||
} | ||
|
||
impl From<Options> for Settings { | ||
fn from(options: Options) -> Self { | ||
Self { | ||
hardcoded_tmp_directory: options | ||
.hardcoded_tmp_directory | ||
.unwrap_or_else(default_tmp_dirs), | ||
hardcoded_tmp_directory_extend: options | ||
.hardcoded_tmp_directory_extend | ||
.unwrap_or_default(), | ||
} | ||
} | ||
} | ||
impl From<Settings> for Options { | ||
fn from(settings: Settings) -> Self { | ||
Self { | ||
hardcoded_tmp_directory: Some(settings.hardcoded_tmp_directory), | ||
hardcoded_tmp_directory_extend: Some(settings.hardcoded_tmp_directory_extend), | ||
} | ||
} | ||
} | ||
|
||
impl Default for Settings { | ||
fn default() -> Self { | ||
Self { | ||
hardcoded_tmp_directory: default_tmp_dirs(), | ||
hardcoded_tmp_directory_extend: Vec::new(), | ||
} | ||
} | ||
} | ||
|
||
impl Settings { | ||
/// Returns an iterator over all directories that are considered temporary. | ||
pub fn all_hardcoded_tmp_directories(&'_ self) -> impl Iterator<Item = &'_ String> { | ||
self.hardcoded_tmp_directory | ||
.iter() | ||
.chain(self.hardcoded_tmp_directory_extend.iter()) | ||
} | ||
} |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Oops, something went wrong.