dawn-cmake/generator/templates
Austin Eng ba68620f6f Do not memcpy transparent wire structs on serialization
This removes a serialization optimization where structs could be
memcpy'ed. memcpy is still used for deserialization of structs.

Structs may contain padding bytes which when copied can leak
uninitialized data across a trusted boundary. In Chrome, this
means previously-written or uninitialized bytes in the GPU process
could leak into the Renderer process.

In the future, we may be able to bring this back by introducing
a concept of safe-to-memcpy structs, or by forking the code so
that Renderer->GPU process uses the unsafe memcpy, and
GPU->Renderer uses to the safe member-by-member version.

An alternative might be to ensure that everything returned from
the WebGPU API has initialized padding, but this invariant is not
trivial to guarantee.

Fixed: chromium:1359098
Change-Id: I91151251d1ab999e0f5552e1efccc472e451cc10
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/102461
Reviewed-by: Brandon Jones <bajones@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Austin Eng <enga@chromium.org>
2022-09-16 14:14:08 +00:00
..
dawn Do not memcpy transparent wire structs on serialization 2022-09-16 14:14:08 +00:00
opengl tint->dawn: Move src/dawn_native -> src/dawn/native 2022-02-04 17:07:46 +00:00
.clang-format Add .clang-format files and format more files 2020-07-15 19:51:17 +00:00
BSD_LICENSE Further api.h license issue fixes 2021-12-14 01:06:15 +00:00
CPPLINT.cfg Enable build/header_guard 2022-04-11 18:30:50 +00:00
api.h dawn.json: Add the "chain roots" data for chained structs. 2022-07-14 12:58:25 +00:00
api_cpp.cpp Template hardcode functions in webgpu_cpp.cpp 2021-12-14 02:20:15 +00:00
api_cpp.h Mark descriptor/options as optional for requestDevice/Adapter 2022-07-26 17:36:44 +00:00
api_cpp_print.h Make templates webgpu_cpp.h and webgpu_cpp_print.h flexible 2021-12-07 00:46:35 +00:00
api_struct_info.json Fix inclusive language presubmit 2022-04-19 22:25:45 +00:00
dawn_proc.c Replace hardcode functions in templates 2021-12-10 01:35:19 +00:00
dawn_proc_table.h Make the prefix of proc table configurable in api.json 2021-12-05 05:29:44 +00:00
dawn_thread_dispatch_proc.cpp Replace hardcode functions in templates 2021-12-10 01:35:19 +00:00
library_api_enum_tables.js Fix inclusive language presubmit 2022-04-19 22:25:45 +00:00
mock_api.cpp Make the templates of mocking api flexible 2021-12-15 04:35:26 +00:00
mock_api.h Convert all dawn includes to use non-system include syntax. 2022-04-19 14:24:04 +00:00