Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/nacl/loader/nacl_ipc_adapter.h" | 5 #include "components/nacl/loader/nacl_ipc_adapter.h" |
| 6 | 6 |
| 7 #include <limits.h> | 7 #include <limits.h> |
| 8 #include <string.h> | 8 #include <string.h> |
| 9 #include <tuple> | 9 #include <tuple> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 563 scoped_ptr<NaClDescWrapper> nacl_desc; | 563 scoped_ptr<NaClDescWrapper> nacl_desc; |
| 564 switch (iter->type()) { | 564 switch (iter->type()) { |
| 565 case ppapi::proxy::SerializedHandle::SHARED_MEMORY: { | 565 case ppapi::proxy::SerializedHandle::SHARED_MEMORY: { |
| 566 nacl_desc = | 566 nacl_desc = |
| 567 MakeShmNaClDesc(iter->shmem(), static_cast<size_t>(iter->size())); | 567 MakeShmNaClDesc(iter->shmem(), static_cast<size_t>(iter->size())); |
| 568 break; | 568 break; |
| 569 } | 569 } |
| 570 case ppapi::proxy::SerializedHandle::SOCKET: { | 570 case ppapi::proxy::SerializedHandle::SOCKET: { |
| 571 nacl_desc.reset(new NaClDescWrapper(NaClDescSyncSocketMake( | 571 nacl_desc.reset(new NaClDescWrapper(NaClDescSyncSocketMake( |
| 572 #if defined(OS_WIN) | 572 #if defined(OS_WIN) |
| 573 iter->descriptor() | 573 iter->descriptor().GetHandle() |
| 574 #else | 574 #else |
| 575 iter->descriptor().fd | 575 iter->descriptor().fd |
| 576 #endif | 576 #endif |
| 577 ))); | 577 ))); |
|
Mark Seaborn
2016/03/29 19:24:09
Nit: should line up with iter->descriptor() args a
erikchen
2016/03/29 20:57:42
Done.
| |
| 578 break; | 578 break; |
| 579 } | 579 } |
| 580 case ppapi::proxy::SerializedHandle::FILE: { | 580 case ppapi::proxy::SerializedHandle::FILE: { |
| 581 // Create the NaClDesc for the file descriptor. If quota checking is | 581 // Create the NaClDesc for the file descriptor. If quota checking is |
| 582 // required, wrap it in a NaClDescQuota. | 582 // required, wrap it in a NaClDescQuota. |
| 583 NaClDesc* desc = NaClDescIoMakeFromHandle( | 583 NaClDesc* desc = NaClDescIoMakeFromHandle( |
| 584 #if defined(OS_WIN) | 584 #if defined(OS_WIN) |
| 585 iter->descriptor(), | 585 iter->descriptor().GetHandle(), |
| 586 #else | 586 #else |
| 587 iter->descriptor().fd, | 587 iter->descriptor().fd, |
| 588 #endif | 588 #endif |
| 589 TranslatePepperFileReadWriteOpenFlags(iter->open_flags())); | 589 TranslatePepperFileReadWriteOpenFlags(iter->open_flags())); |
| 590 if (desc && iter->file_io()) { | 590 if (desc && iter->file_io()) { |
| 591 desc = MakeNaClDescQuota( | 591 desc = MakeNaClDescQuota( |
| 592 locked_data_.nacl_msg_scanner_.GetFile(iter->file_io()), | 592 locked_data_.nacl_msg_scanner_.GetFile(iter->file_io()), |
| 593 desc); | 593 desc); |
| 594 } | 594 } |
| 595 if (desc) | 595 if (desc) |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 652 // original FD to the client without making a validated NaClDesc. | 652 // original FD to the client without making a validated NaClDesc. |
| 653 // However, we must rewrite the message to clear the file tokens. | 653 // However, we must rewrite the message to clear the file tokens. |
| 654 base::PickleIterator iter = IPC::SyncMessage::GetDataIterator(&orig_msg); | 654 base::PickleIterator iter = IPC::SyncMessage::GetDataIterator(&orig_msg); |
| 655 ppapi::proxy::SerializedHandle sh; | 655 ppapi::proxy::SerializedHandle sh; |
| 656 | 656 |
| 657 // We know that this can be read safely; see the original read in | 657 // We know that this can be read safely; see the original read in |
| 658 // OnMessageReceived(). | 658 // OnMessageReceived(). |
| 659 CHECK(IPC::ReadParam(&orig_msg, &iter, &sh)); | 659 CHECK(IPC::ReadParam(&orig_msg, &iter, &sh)); |
| 660 scoped_ptr<IPC::Message> new_msg = CreateOpenResourceReply(orig_msg, sh); | 660 scoped_ptr<IPC::Message> new_msg = CreateOpenResourceReply(orig_msg, sh); |
| 661 | 661 |
| 662 scoped_ptr<NaClDescWrapper> desc_wrapper(new NaClDescWrapper( | 662 scoped_ptr<NaClDescWrapper> desc_wrapper( |
| 663 NaClDescIoMakeFromHandle( | 663 new NaClDescWrapper(NaClDescIoMakeFromHandle( |
| 664 #if defined(OS_WIN) | 664 #if defined(OS_WIN) |
| 665 sh.descriptor(), | 665 sh.descriptor().GetHandle(), |
| 666 #else | 666 #else |
| 667 sh.descriptor().fd, | 667 sh.descriptor().fd, |
| 668 #endif | 668 #endif |
| 669 NACL_ABI_O_RDONLY))); | 669 NACL_ABI_O_RDONLY))); |
| 670 | 670 |
| 671 scoped_refptr<RewrittenMessage> rewritten_msg(new RewrittenMessage); | 671 scoped_refptr<RewrittenMessage> rewritten_msg(new RewrittenMessage); |
| 672 rewritten_msg->AddDescriptor(desc_wrapper.release()); | 672 rewritten_msg->AddDescriptor(desc_wrapper.release()); |
| 673 { | 673 { |
| 674 base::AutoLock lock(lock_); | 674 base::AutoLock lock(lock_); |
| 675 SaveMessage(*new_msg, rewritten_msg.get()); | 675 SaveMessage(*new_msg, rewritten_msg.get()); |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 841 header.flags = msg.flags(); | 841 header.flags = msg.flags(); |
| 842 header.num_fds = static_cast<uint16_t>(rewritten_msg->desc_count()); | 842 header.num_fds = static_cast<uint16_t>(rewritten_msg->desc_count()); |
| 843 | 843 |
| 844 rewritten_msg->SetData(header, msg.payload(), msg.payload_size()); | 844 rewritten_msg->SetData(header, msg.payload(), msg.payload_size()); |
| 845 locked_data_.to_be_received_.push(rewritten_msg); | 845 locked_data_.to_be_received_.push(rewritten_msg); |
| 846 } | 846 } |
| 847 | 847 |
| 848 int TranslatePepperFileReadWriteOpenFlagsForTesting(int32_t pp_open_flags) { | 848 int TranslatePepperFileReadWriteOpenFlagsForTesting(int32_t pp_open_flags) { |
| 849 return TranslatePepperFileReadWriteOpenFlags(pp_open_flags); | 849 return TranslatePepperFileReadWriteOpenFlags(pp_open_flags); |
| 850 } | 850 } |
| OLD | NEW |