Skip to content

Commit

Permalink
Merge pull request #2061 from Amanieu/fix_indices
Browse files Browse the repository at this point in the history
Avoid UB in PySlice::indices
  • Loading branch information
davidhewitt authored Dec 20, 2021
2 parents c7ca8bb + ed0a6b7 commit 6033d69
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 8 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fix undefined symbol for `PyObject_HasAttr` on PyPy. [#2025](https://github.com/PyO3/pyo3/pull/2025)
- Fix memory leak in `PyErr::into_value`. [#2026](https://github.com/PyO3/pyo3/pull/2026)
- Fix clippy warning `needless-option-as-deref` in code generated by `#[pyfunction]` and `#[pymethods]`. [#2040](https://github.com/PyO3/pyo3/pull/2040)
- Fix undefined behavior in `PySlice::indices`. [#2061](https://github.com/PyO3/pyo3/pull/2061)

## [0.15.1] - 2021-11-19

Expand Down
16 changes: 8 additions & 8 deletions src/types/slice.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,17 @@ impl PySlice {
pub fn indices(&self, length: c_long) -> PyResult<PySliceIndices> {
// non-negative Py_ssize_t should always fit into Rust usize
unsafe {
let slicelength: isize = 0;
let start: isize = 0;
let stop: isize = 0;
let step: isize = 0;
let mut slicelength: isize = 0;
let mut start: isize = 0;
let mut stop: isize = 0;
let mut step: isize = 0;
let r = ffi::PySlice_GetIndicesEx(
self.as_ptr(),
length as Py_ssize_t,
&start as *const _ as *mut _,
&stop as *const _ as *mut _,
&step as *const _ as *mut _,
&slicelength as *const _ as *mut _,
&mut start,
&mut stop,
&mut step,
&mut slicelength,
);
if r == 0 {
Ok(PySliceIndices {
Expand Down

0 comments on commit 6033d69

Please sign in to comment.