summaryrefslogtreecommitdiffstats
path: root/base/win/scoped_process_information.h
diff options
context:
space:
mode:
authorrvargas@chromium.org <rvargas@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-28 05:16:59 +0000
committerrvargas@chromium.org <rvargas@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-28 05:16:59 +0000
commit5be06e403789b537097560fef594000626a61997 (patch)
tree7921ffcc481aa118a901086229fda96519973757 /base/win/scoped_process_information.h
parent96798670fd3a04b7bf820eb39c7fdbde25414e53 (diff)
downloadchromium_src-5be06e403789b537097560fef594000626a61997.zip
chromium_src-5be06e403789b537097560fef594000626a61997.tar.gz
chromium_src-5be06e403789b537097560fef594000626a61997.tar.bz2
Base: Remove Receive() from ScopedHandle.
In general, the OS API contract doesn't guarantee that output variables are not modified on failure, so a Reeceive pattern is fundamentally insecure. BUG=318531 TEST=current tests tbr'ing owners for the consumers. TBR=jvoung@chromium.org, thakis@chromium.org, sergeyu@chromium.org, grt@chromium.org, gene@chromium.org, youngki@chromium.org Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=237459 Review URL: https://codereview.chromium.org/71013004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@237675 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/win/scoped_process_information.h')
-rw-r--r--base/win/scoped_process_information.h25
1 files changed, 1 insertions, 24 deletions
diff --git a/base/win/scoped_process_information.h b/base/win/scoped_process_information.h
index 1f404c2..2e24054 100644
--- a/base/win/scoped_process_information.h
+++ b/base/win/scoped_process_information.h
@@ -18,33 +18,10 @@ namespace win {
// structures. Allows clients to take ownership of either handle independently.
class BASE_EXPORT ScopedProcessInformation {
public:
- // Helper object to contain the effect of Receive() to the funtion that needs
- // a pointer.
- class Receiver {
- public:
- explicit Receiver(ScopedProcessInformation* owner)
- : info_(),
- owner_(owner) {}
- ~Receiver() { owner_->Set(info_); }
-
- operator PROCESS_INFORMATION*() { return &info_; }
-
- private:
- PROCESS_INFORMATION info_;
- ScopedProcessInformation* owner_;
- };
-
ScopedProcessInformation();
+ explicit ScopedProcessInformation(const PROCESS_INFORMATION& process_info);
~ScopedProcessInformation();
- // Returns an object that may be passed to API calls such as CreateProcess.
- // DCHECKs that the object is not currently holding any handles.
- // HANDLEs stored in the returned PROCESS_INFORMATION will be owned by this
- // instance.
- // The intended use case is something like this:
- // if (::CreateProcess(..., startup_info, scoped_proces_info.Receive()))
- Receiver Receive();
-
// Returns true iff this instance is holding a thread and/or process handle.
bool IsValid() const;