Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions proxy_wasm_intrinsics.cc
Original file line number Diff line number Diff line change
Expand Up @@ -271,3 +271,25 @@ extern "C" PROXY_WASM_KEEPALIVE void
proxy_on_foreign_function(uint32_t context_id, uint32_t foreign_function_id, uint32_t data_size) {
getContextBase(context_id)->onForeignFunction(foreign_function_id, data_size);
}

// Patch an Emscripten gap: https://github.com/emscripten-core/emscripten/issues/22782
// Implement getentropy for RNG support (e.g. for absl::random).

typedef uint16_t __wasi_errno_t;
typedef size_t __wasi_size_t;

__wasi_errno_t __wasi_random_get(uint8_t *buf, __wasi_size_t buf_len)
__attribute__((__import_module__("wasi_snapshot_preview1"), __import_name__("random_get")));

extern "C" int getentropy(void *buffer, size_t len) {
if (len > 256) {
errno = EIO;
return -1;
}
int r = __wasi_random_get((uint8_t *)buffer, len);
if (r != 0) {
errno = r;
return -1;
}
return 0;
}
Loading