summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorthomasvl@chromium.org <thomasvl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-22 21:51:05 +0000
committerthomasvl@chromium.org <thomasvl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-22 21:51:05 +0000
commita3f5405d639c56dd019649842f30d48b1056e1e6 (patch)
treef355ee53c265e461ff1aa209fc0fb509363a8dde /chrome
parente8907fcac279996521bb12d5d742488fa850a46a (diff)
downloadchromium_src-a3f5405d639c56dd019649842f30d48b1056e1e6.zip
chromium_src-a3f5405d639c56dd019649842f30d48b1056e1e6.tar.gz
chromium_src-a3f5405d639c56dd019649842f30d48b1056e1e6.tar.bz2
Try 2: on fstat checking
- make sure the handle is valid before doing anything with the fd. - make sure the fstat works before mapping. BUG=none TEST=none Review URL: http://codereview.chromium.org/509036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35173 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/common/transport_dib_mac.cc8
1 files changed, 5 insertions, 3 deletions
diff --git a/chrome/common/transport_dib_mac.cc b/chrome/common/transport_dib_mac.cc
index 59b9433..9634d83 100644
--- a/chrome/common/transport_dib_mac.cc
+++ b/chrome/common/transport_dib_mac.cc
@@ -38,11 +38,13 @@ TransportDIB* TransportDIB::Create(size_t size, uint32 sequence_num) {
// static
TransportDIB* TransportDIB::Map(TransportDIB::Handle handle) {
+ if (!is_valid(handle))
+ return NULL;
+
TransportDIB* dib = new TransportDIB(handle);
struct stat st;
- fstat(handle.fd, &st);
-
- if (!dib->shared_memory_.Map(st.st_size)) {
+ if ((fstat(handle.fd, &st) != 0) ||
+ (!dib->shared_memory_.Map(st.st_size))) {
delete dib;
HANDLE_EINTR(close(handle.fd));
return NULL;