Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: remoting/host/native_messaging/pipe_messaging_channel.cc

Issue 615543004: Fix remoting NM hosts to verify that incoming messages are dictionaries. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "remoting/host/native_messaging/pipe_messaging_channel.h" 5 #include "remoting/host/native_messaging/pipe_messaging_channel.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 DCHECK(event_handler_); 65 DCHECK(event_handler_);
66 66
67 native_messaging_reader_.Start( 67 native_messaging_reader_.Start(
68 base::Bind(&PipeMessagingChannel::ProcessMessage, weak_ptr_), 68 base::Bind(&PipeMessagingChannel::ProcessMessage, weak_ptr_),
69 base::Bind(&PipeMessagingChannel::Shutdown, weak_ptr_)); 69 base::Bind(&PipeMessagingChannel::Shutdown, weak_ptr_));
70 } 70 }
71 71
72 void PipeMessagingChannel::ProcessMessage(scoped_ptr<base::Value> message) { 72 void PipeMessagingChannel::ProcessMessage(scoped_ptr<base::Value> message) {
73 DCHECK(CalledOnValidThread()); 73 DCHECK(CalledOnValidThread());
74 74
75 if (message->GetType() != base::Value::TYPE_DICTIONARY) {
76 LOG(ERROR) << "Expected DictionaryValue";
77 Shutdown();
78 return;
79 }
80
81 if (event_handler_) 75 if (event_handler_)
82 event_handler_->OnMessage(message.Pass()); 76 event_handler_->OnMessage(message.Pass());
83 } 77 }
84 78
85 void PipeMessagingChannel::SendMessage( 79 void PipeMessagingChannel::SendMessage(
86 scoped_ptr<base::Value> message) { 80 scoped_ptr<base::Value> message) {
87 DCHECK(CalledOnValidThread()); 81 DCHECK(CalledOnValidThread());
88 82
89 bool success = message && native_messaging_writer_; 83 bool success = message && native_messaging_writer_;
90 if (success) 84 if (success)
(...skipping 14 matching lines...) Expand all
105 // Since event_handler->OnDisconnect() will destroy the current object, 99 // Since event_handler->OnDisconnect() will destroy the current object,
106 // |event_handler_| will become a dangling pointer after OnDisconnect() 100 // |event_handler_| will become a dangling pointer after OnDisconnect()
107 // returns. Therefore, we set |event_handler_| to NULL beforehand. 101 // returns. Therefore, we set |event_handler_| to NULL beforehand.
108 EventHandler* handler = event_handler_; 102 EventHandler* handler = event_handler_;
109 event_handler_ = NULL; 103 event_handler_ = NULL;
110 handler->OnDisconnect(); 104 handler->OnDisconnect();
111 } 105 }
112 } 106 }
113 107
114 } // namespace remoting 108 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/it2me/it2me_native_messaging_host.cc ('k') | remoting/host/setup/me2me_native_messaging_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698