diff options
author | thomasvl@chromium.org <thomasvl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-22 21:51:05 +0000 |
---|---|---|
committer | thomasvl@chromium.org <thomasvl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-22 21:51:05 +0000 |
commit | a3f5405d639c56dd019649842f30d48b1056e1e6 (patch) | |
tree | f355ee53c265e461ff1aa209fc0fb509363a8dde /chrome | |
parent | e8907fcac279996521bb12d5d742488fa850a46a (diff) | |
download | chromium_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.cc | 8 |
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; |