Index: ipc/ipc_channel_posix.cc |
=================================================================== |
--- ipc/ipc_channel_posix.cc (revision 33340) |
+++ ipc/ipc_channel_posix.cc (working copy) |
@@ -338,6 +338,16 @@ |
return false; |
AddChannelSocket(pipe_name_, client_pipe_); |
} else { |
+ // Guard against inappropriate reuse of the initial IPC channel. If |
+ // an IPC channel closes and someone attempts to reuse it by name, the |
+ // initial channel must not be recycled here. http://crbug.com/26754. |
+ static bool used_initial_channel = false; |
+ if (used_initial_channel) { |
+ LOG(FATAL) << "Denying attempt to reuse initial IPC channel"; |
+ return false; |
+ } |
+ used_initial_channel = true; |
+ |
pipe_ = Singleton<base::GlobalDescriptors>()->Get(kPrimaryIPCChannel); |
} |
} else { |