We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see ourdocumentation.
There was an error while loading.Please reload this page.
2 parents1ffb268 +88abb3c commit3d8d5f5Copy full SHA for 3d8d5f5
.github/workflows/ci.yml
@@ -37,6 +37,9 @@ jobs:
37
toolchain:${{ matrix.rust }}
38
target:${{ matrix.target }}
39
40
+ -if:${{ matrix.rust=='1.65.0' }}
41
+run:cargo update --precise 2.0.106 --package syn
42
+
43
-name:Install armv7 libraries
44
if:${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }}
45
run:|
CHANGELOG.md
@@ -12,6 +12,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
12
- Added async`DelayNs` implementation for`tokio`.
13
- Added feature flag for`serial`.
14
15
+###Fixed
16
17
+- Fix UB (and remove unsafe block) in handling of SpiOperation::TransferInPlace
18
19
##[v0.4.0] - 2024-01-10
20
21
###Changed
Cargo.toml
@@ -31,7 +31,7 @@ sysfs_gpio = { version = "0.6.1", optional = true }
31
i2cdev = {version ="0.6.0",optional =true }
32
nb ="1"
33
serialport = {version ="4.2.0",default-features =false,optional =true }
34
-spidev = {version ="0.6.0",optional =true }
+spidev = {version ="0.6.1",optional =true }
35
nix = {version ="0.27.1",optional =true }
36
tokio = {version ="1",default-features =false,optional =true }
src/spi.rs
@@ -173,9 +173,8 @@ mod embedded_hal_impl {
173
}
174
175
fntransfer_in_place(&mutself,words:&mut[u8]) ->Result<(),Self::Error>{
176
-let tx = words.to_owned();
177
self.0
178
-.transfer(&mutSpidevTransfer::read_write(&tx,words))
+.transfer(&mutSpidevTransfer::read_write_in_place(words))
179
.map_err(|err|SPIError{ err})
180
181
@@ -214,11 +213,7 @@ mod embedded_hal_impl {
214
213
215
},
216
SpiOperation::TransferInPlace(buf) =>{
217
-let tx =unsafe{
218
-let p = buf.as_ptr();
219
- std::slice::from_raw_parts(p, buf.len())
220
-};
221
- transfers.push(SpidevTransfer::read_write(tx, buf));
+ transfers.push(SpidevTransfer::read_write_in_place(buf));
222
223
SpiOperation::DelayNs(ns) =>{
224
let us ={