Merge pull request #2061 from Amanieu/fix_indices
Avoid UB in PySlice::indices
This commit is contained in:
commit
6033d696b1
|
@ -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
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue