diff --git a/rules/S6466/rust/metadata.json b/rules/S6466/rust/metadata.json new file mode 100644 index 0000000000..7ecbe54bc1 --- /dev/null +++ b/rules/S6466/rust/metadata.json @@ -0,0 +1,24 @@ +{ + "title": "Accessing an array element should not trigger a panic", + "type": "BUG", + "code": { + "impacts": { + "RELIABILITY": "HIGH" + }, + "attribute": "LOGICAL" + }, + "status": "ready", + "remediation": { + "func": "Constant\/Issue", + "constantCost": "10min" + }, + "tags": [ + "clippy" + ], + "defaultSeverity": "Critical", + "ruleSpecification": "RSPEC-6466", + "sqKey": "S6466", + "scope": "All", + "defaultQualityProfiles": ["Sonar way"], + "quickfix": "unknown" +} diff --git a/rules/S6466/rust/rule.adoc b/rules/S6466/rust/rule.adoc new file mode 100644 index 0000000000..e4ad3d5367 --- /dev/null +++ b/rules/S6466/rust/rule.adoc @@ -0,0 +1,37 @@ +== Why is this an issue? + +An array index out-of-bounds panic is a bug class that occurs in Rust when a +program tries to access an array element that does not exist. +This bug can cause your program to crash or behave unexpectedly. + +include::../impact.adoc[] + +== How to fix it + +To fix an array index out of bounds panic in Rust, you should always ensure +that you are accessing array elements within the bounds of the array. + +=== Code examples + +==== Noncompliant code example + +[source,rust,diff-id=1,diff-type=noncompliant] +---- +let x = [1, 2, 3, 4]; + +x[9]; // Out of bounds indexing +---- + +==== Compliant solution + +[source,rust,diff-id=1,diff-type=compliant] +---- +let x = [1, 2, 3, 4]; + +x[0]; +---- + +== Resources +=== Documentation + +* Clippy Lints - https://rust-lang.github.io/rust-clippy/master/index.html#out_of_bounds_indexing