Merge pull request #1096 from tmandry/patch-1
Fix assertions inside read_{u32,u64}_into
diff --git a/rand_core/CHANGELOG.md b/rand_core/CHANGELOG.md
index c0c2418..23d1fa5 100644
--- a/rand_core/CHANGELOG.md
+++ b/rand_core/CHANGELOG.md
@@ -4,6 +4,11 @@
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.6.2] - 2021-02-12
+### Fixed
+- Fixed assertions in `le::read_u32_into` and `le::read_u64_into` which could
+ have allowed buffers not to be fully populated (#1096)
+
## [0.6.1] - 2021-01-03
### Fixed
- Avoid panic when using `RngCore::seed_from_u64` with a seed which is not a
diff --git a/rand_core/Cargo.toml b/rand_core/Cargo.toml
index bfb877d..d460757 100644
--- a/rand_core/Cargo.toml
+++ b/rand_core/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "rand_core"
-version = "0.6.1"
+version = "0.6.2"
authors = ["The Rand Project Developers", "The Rust Project Developers"]
license = "MIT OR Apache-2.0"
readme = "README.md"
diff --git a/rand_core/src/le.rs b/rand_core/src/le.rs
index fa33892..ed42e57 100644
--- a/rand_core/src/le.rs
+++ b/rand_core/src/le.rs
@@ -16,7 +16,7 @@
/// Reads unsigned 32 bit integers from `src` into `dst`.
#[inline]
pub fn read_u32_into(src: &[u8], dst: &mut [u32]) {
- assert!(4 * src.len() >= dst.len());
+ assert!(src.len() >= 4 * dst.len());
for (out, chunk) in dst.iter_mut().zip(src.chunks_exact(4)) {
*out = u32::from_le_bytes(chunk.try_into().unwrap());
}
@@ -25,7 +25,7 @@
/// Reads unsigned 64 bit integers from `src` into `dst`.
#[inline]
pub fn read_u64_into(src: &[u8], dst: &mut [u64]) {
- assert!(8 * src.len() >= dst.len());
+ assert!(src.len() >= 8 * dst.len());
for (out, chunk) in dst.iter_mut().zip(src.chunks_exact(8)) {
*out = u64::from_le_bytes(chunk.try_into().unwrap());
}