From fc6237363ba56f64369d2ecc7214b46542fa9e51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Gardstr=C3=B6m?= Date: Tue, 9 Nov 2021 22:41:27 +0100 Subject: [PATCH 1/2] check for wrong range size --- svd-parser/src/bitrange.rs | 4 ++++ svd-rs/CHANGELOG.md | 1 + 2 files changed, 5 insertions(+) diff --git a/svd-parser/src/bitrange.rs b/svd-parser/src/bitrange.rs index e8ed2c7c..0fb8ec4e 100644 --- a/svd-parser/src/bitrange.rs +++ b/svd-parser/src/bitrange.rs @@ -7,6 +7,7 @@ pub enum InvalidBitRange { ParseError, MsbLsb, Empty, + Size, } impl Parse for BitRange { @@ -83,6 +84,9 @@ impl Parse for BitRange { return Err(SVDError::InvalidBitRange(InvalidBitRange::Syntax).at(tree.id())); }; + if start > end { + return Err(SVDError::InvalidBitRange(InvalidBitRange::Size).at(tree.id())); + } Ok(Self { offset: start, width: end - start + 1, diff --git a/svd-rs/CHANGELOG.md b/svd-rs/CHANGELOG.md index 5486d4cb..dbfcb1f9 100644 --- a/svd-rs/CHANGELOG.md +++ b/svd-rs/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## Unreleased +- Add `name` function to `Cluster` - `AddressBlock` now uses builder - Add `dim_name` and `dim_array_index` to `DimElement` - Add `alternate_peripheral`, `prepend_to_name`, `append_to_name`, From 09fe69d8ba75cb8ff650fab5b8d243f9e9442535 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Gardstr=C3=B6m?= Date: Tue, 9 Nov 2021 22:41:59 +0100 Subject: [PATCH 2/2] add function to get name of cluster --- svd-parser/CHANGELOG.md | 1 + svd-rs/src/cluster.rs | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/svd-parser/CHANGELOG.md b/svd-parser/CHANGELOG.md index 640ddaf2..35938de9 100644 --- a/svd-parser/CHANGELOG.md +++ b/svd-parser/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## Unreleased +- Add check for wrong size of `bitRange` width - Add `protection` parsing - Add `readAction` parsing - Add array support for peripherals diff --git a/svd-rs/src/cluster.rs b/svd-rs/src/cluster.rs index d42538a2..90ee9426 100644 --- a/svd-rs/src/cluster.rs +++ b/svd-rs/src/cluster.rs @@ -40,6 +40,14 @@ impl Cluster { pub const fn is_array(&self) -> bool { matches!(self, Self::Array(_, _)) } + + /// Get the name of this cluster + pub fn name(&self) -> &str { + match self { + Self::Single(info) => &info.name, + Self::Array(info, _) => &info.name, + } + } } #[cfg(feature = "serde")]