RUSTSEC-2020-0082

    Dashboard / Vulnerabilities / RUSTSEC-2020-0082

    RUSTSEC-2020-0082

    Published: 6 Dec 2020Last Modified: 8 Nov 2023

    Summary: ordered_float:NotNan may contain NaN after panic in assignment operators

    Details: After using an assignment operators such as `NotNan::add_assign`, `NotNan::mul_assign`, etc., it was possible for the resulting `NotNan` value to contain a `NaN`. This could cause undefined behavior in safe code, because the safe `NotNan::cmp` method contains internal unsafe code that assumes the value is never `NaN`. (It could also cause undefined behavior in third-party unsafe code that makes the same assumption, as well as logic errors in safe code.) This was mitigated starting in version 0.4.0, by panicking if the assigned value is NaN. However, in affected versions from 0.4.0 onward, code that uses the `NotNan` value during unwinding, or that continues after catching the panic, could still observe the invalid value and trigger undefined behavior. The flaw is fully corrected in versions 1.1.1 and 2.0.1, by ensuring that the assignment operators panic without modifying the operand, if the result would be `NaN`.

    Affected packages

    Package

    Name: ordered-float

    Purl: pkg:cargo/ordered-float

    Affected ranges

    Type: SEMVER

    Events:

    Introduced- 0.2.2
    Fixed -1.1.1

    Affected versions

    Common Vulnerability Scoring System

    Attack Vector
    Network
    Adjacent
    Local
    Physical
    Privileges Required
    None
    Low
    High
    User Interaction
    None
    Required
    Scope
    Unchanged
    Changed
    Confidentiality
    None
    Low
    High
    Integrity
    None
    Low
    High
    Availability
    None
    Low
    High
    RUSTSEC-2020-0082 | CVE-DB