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

Side by Side Diff: ipc/attachment_broker_privileged.h

Issue 1979533003: Fix an attachment broker race condition. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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
« no previous file with comments | « ipc/attachment_broker.cc ('k') | ipc/attachment_broker_privileged_win.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #ifndef IPC_ATTACHMENT_BROKER_PRIVILEGED_H_ 5 #ifndef IPC_ATTACHMENT_BROKER_PRIVILEGED_H_
6 #define IPC_ATTACHMENT_BROKER_PRIVILEGED_H_ 6 #define IPC_ATTACHMENT_BROKER_PRIVILEGED_H_
7 7
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 // The lock returned by get_lock() must already be acquired before calling 64 // The lock returned by get_lock() must already be acquired before calling
65 // this method. The return value is only guaranteed to be valid while the lock 65 // this method. The return value is only guaranteed to be valid while the lock
66 // is held. 66 // is held.
67 EndpointRunnerPair GetSenderWithProcessId(base::ProcessId id); 67 EndpointRunnerPair GetSenderWithProcessId(base::ProcessId id);
68 68
69 // Sends a message to the endpoint, dispatching onto another thread if 69 // Sends a message to the endpoint, dispatching onto another thread if
70 // necessary. 70 // necessary.
71 void SendMessageToEndpoint(EndpointRunnerPair pair, Message* message); 71 void SendMessageToEndpoint(EndpointRunnerPair pair, Message* message);
72 72
73 // Errors that can be reported by subclasses. 73 // Errors that can be reported by subclasses.
74 // These match tools/metrics/histograms.xml. 74 // These match tools/metrics/histograms/histograms.xml.
75 // This enum is append-only. 75 // This enum is append-only.
76 enum UMAError { 76 enum UMAError {
77 // The brokerable attachment had a valid destination. This is the success 77 // The brokerable attachment had a valid destination. This is the success
78 // case. 78 // case.
79 DESTINATION_FOUND = 0, 79 DESTINATION_FOUND = 0,
80 // The brokerable attachment had a destination, but the broker did not have 80 // The brokerable attachment had a destination, but the broker did not have
81 // a channel of communication with that process. 81 // a channel of communication with that process.
82 DESTINATION_NOT_FOUND = 1, 82 DESTINATION_NOT_FOUND = 1,
83 // The brokerable attachment did not have a destination process. 83 // The brokerable attachment did not have a destination process.
84 NO_DESTINATION = 2, 84 NO_DESTINATION = 2,
(...skipping 16 matching lines...) Expand all
101 // Couldn't extract a right from the source. 101 // Couldn't extract a right from the source.
102 ERROR_EXTRACT_SOURCE_RIGHT = 11, 102 ERROR_EXTRACT_SOURCE_RIGHT = 11,
103 // The broker did not have a channel of communication with the source 103 // The broker did not have a channel of communication with the source
104 // process. 104 // process.
105 ERROR_SOURCE_NOT_FOUND = 12, 105 ERROR_SOURCE_NOT_FOUND = 12,
106 // The broker could not open the source or destination process with extra 106 // The broker could not open the source or destination process with extra
107 // privileges. 107 // privileges.
108 ERROR_COULD_NOT_OPEN_SOURCE_OR_DEST = 13, 108 ERROR_COULD_NOT_OPEN_SOURCE_OR_DEST = 13,
109 // The broker was asked to transfer a HANDLE with invalid permissions. 109 // The broker was asked to transfer a HANDLE with invalid permissions.
110 ERROR_INVALID_PERMISSIONS = 14, 110 ERROR_INVALID_PERMISSIONS = 14,
111 // The broker was not immediately able to send an attachment.
112 DELAYED = 15,
113 // The broker successfully sent a delayed attachment.
114 DELAYED_SEND = 16,
111 ERROR_MAX 115 ERROR_MAX
112 }; 116 };
113 117
114 // Emits an UMA metric. 118 // Emits an UMA metric.
115 void LogError(UMAError error); 119 void LogError(UMAError error);
116 120
117 private: 121 private:
118 // A vector of Endpoints, and the SingleThreadTaskRunner that should be used 122 // A vector of Endpoints, and the SingleThreadTaskRunner that should be used
119 // to invoke Send() on each Endpoint. 123 // to invoke Send() on each Endpoint.
120 std::vector<EndpointRunnerPair> endpoints_; 124 std::vector<EndpointRunnerPair> endpoints_;
121 DISALLOW_COPY_AND_ASSIGN(AttachmentBrokerPrivileged); 125 DISALLOW_COPY_AND_ASSIGN(AttachmentBrokerPrivileged);
122 }; 126 };
123 127
124 } // namespace IPC 128 } // namespace IPC
125 129
126 #endif // IPC_ATTACHMENT_BROKER_PRIVILEGED_H_ 130 #endif // IPC_ATTACHMENT_BROKER_PRIVILEGED_H_
OLDNEW
« no previous file with comments | « ipc/attachment_broker.cc ('k') | ipc/attachment_broker_privileged_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698