You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
VendorInfo::as_string(), SoCVendorBrand::as_string(),
and ExtendedFunctionInfo::processor_brand_string() construct byte slices
using std::slice::from_raw_parts(), with data coming from #[repr(Rust)] structs. This is always undefined behavior.
This flaw has been fixed in v9.0.0, by making the relevant structs #[repr(C)].
native_cpuid::cpuid_count() is unsound
native_cpuid::cpuid_count() exposes the unsafe __cpuid_count() intrinsic
from core::arch::x86 or core::arch::x86_64 as a safe function, and uses
it internally, without checking the safety requirement:
> The CPU the program is currently running on supports the function being
> called.
CPUID is available in most, but not all, x86/x86_64 environments. The crate
compiles only on these architectures, so others are unaffected.
This issue is mitigated by the fact that affected programs are expected
to crash deterministically every time.
raw-cpuid
8.1.2
>=9.0.0
Undefined behavior in
as_string()
methodsVendorInfo::as_string()
,SoCVendorBrand::as_string()
,and
ExtendedFunctionInfo::processor_brand_string()
construct byte slicesusing
std::slice::from_raw_parts()
, with data coming from#[repr(Rust)]
structs. This is always undefined behavior.See gz/rust-cpuid#40.
This flaw has been fixed in v9.0.0, by making the relevant structs
#[repr(C)]
.native_cpuid::cpuid_count()
is unsoundnative_cpuid::cpuid_count()
exposes the unsafe__cpuid_count()
intrinsicfrom
core::arch::x86
orcore::arch::x86_64
as a safe function, and usesit internally, without checking the
safety requirement:
> The CPU the program is currently running on supports the function being
> called.
CPUID is available in most, but not all, x86/x86_64 environments. The crate
compiles only on these architectures, so others are unaffected.
This issue is mitigated by the fact that affected programs are expected
to crash deterministically every time.
See gz/rust-cpuid#41.
The flaw has been fixed in v9.0.0, by intentionally breaking compilation
when targetting SGX or 32-bit x86 without SSE. This covers all affected CPUs.
See advisory page for additional details.
The text was updated successfully, but these errors were encountered: