| Index: ipc/handle_attachment_win.cc
|
| diff --git a/ipc/handle_attachment_win.cc b/ipc/handle_attachment_win.cc
|
| index 50e3e6dab24310c5bba54d5f44cfa42cb436630e..429c964ee53312bb443491e0f25b410889389df3 100644
|
| --- a/ipc/handle_attachment_win.cc
|
| +++ b/ipc/handle_attachment_win.cc
|
| @@ -6,12 +6,29 @@
|
|
|
| #include <windows.h>
|
|
|
| +#include "crypto/random.h"
|
| +
|
| namespace IPC {
|
| namespace internal {
|
|
|
| +namespace {
|
| +
|
| +// In order to prevent mutually untrusted processes from stealing resources from
|
| +// one another, the nonce must be secret. This generates a 128-bit,
|
| +// cryptographicaly-strong random number.
|
| +BrokerableAttachment::AttachmentId GenerateAttachementId() {
|
| + BrokerableAttachment::AttachmentId result;
|
| + crypto::RandBytes(result.nonce, BrokerableAttachment::kNonceSize);
|
| + return result;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| HandleAttachmentWin::HandleAttachmentWin(const HANDLE& handle,
|
| HandleWin::Permissions permissions)
|
| - : handle_(handle), permissions_(permissions) {}
|
| + : BrokerableAttachment(GenerateAttachementId(), true),
|
| + handle_(handle),
|
| + permissions_(permissions) {}
|
|
|
| HandleAttachmentWin::HandleAttachmentWin(const WireFormat& wire_format)
|
| : BrokerableAttachment(wire_format.attachment_id, false),
|
|
|