technocreatives / core2

The bare essentials of std::io for use in no_std. Alloc support is optional.
https://docs.rs/core2
Apache License 2.0
71 stars 23 forks source link

`BufWriter` panics with small writes #12

Open seritools opened 2 years ago

seritools commented 2 years ago

https://github.com/technocreatives/core2/blob/d2d4681c13dfef88ac5fe0ced8d3cb98ccdee85c/src/io/buffered.rs#L612-613 https://github.com/technocreatives/core2/blob/d2d4681c13dfef88ac5fe0ced8d3cb98ccdee85c/src/io/buffered.rs#L631-633

copy_from_slice panics if the slices are of different length. The code does not limit self.buf to the correct slice offset and length needed for this call to ever succeed.

I think it should have been something like

self.buf[self.len..][..buf.len()].copy_from_slice(buf);

Maybe it makes sense to grab the implementation for that from the current stdlib code?