Skip to content

Commit

Permalink
LibWeb: Refuse to fill float array with random values
Browse files Browse the repository at this point in the history
This passes an additional test in WPT:
WebCryptoAPI/getRandomValues.any
  • Loading branch information
BenWiederhake authored and gmta committed Oct 28, 2024
1 parent 157dbba commit 4a6ce21
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions Userland/Libraries/LibWeb/Crypto/Crypto.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@ WebIDL::ExceptionOr<JS::Handle<WebIDL::ArrayBufferView>> Crypto::get_random_valu
return WebIDL::TypeMismatchError::create(realm(), "array must be one of Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, or BigUint64Array"_string);

auto const& typed_array = *array->bufferable_object().get<JS::NonnullGCPtr<JS::TypedArrayBase>>();
// Still need to exclude Float32Array, and potential future siblings like Float16Array:
if (!typed_array.element_name().is_one_of("Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Uint16Array", "Int32Array", "Uint32Array", "BigInt64Array", "BigUint64Array"))
return WebIDL::TypeMismatchError::create(realm(), "array must be one of Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, or BigUint64Array"_string);

auto typed_array_record = JS::make_typed_array_with_buffer_witness_record(typed_array, JS::ArrayBuffer::Order::SeqCst);

// IMPLEMENTATION DEFINED: If the viewed array buffer is out-of-bounds, throw a InvalidStateError and terminate the algorithm.
Expand Down

0 comments on commit 4a6ce21

Please sign in to comment.