diff options
author | gman@google.com <gman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-02 07:21:51 +0000 |
---|---|---|
committer | gman@google.com <gman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-02 07:21:51 +0000 |
commit | b09d39d2db95fc014f0ed248e7d460f86dd45335 (patch) | |
tree | 5d8d117ab09a04b3fbc2166e0d7533107910edf9 /o3d | |
parent | f0197ec3f21539aac7cd989d4971373f1eace923 (diff) | |
download | chromium_src-b09d39d2db95fc014f0ed248e7d460f86dd45335.zip chromium_src-b09d39d2db95fc014f0ed248e7d460f86dd45335.tar.gz chromium_src-b09d39d2db95fc014f0ed248e7d460f86dd45335.tar.bz2 |
Fixes crash bug when gzipped tar file is corrupt.
Review URL: http://codereview.chromium.org/118052
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17392 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'o3d')
-rw-r--r-- | o3d/import/cross/archive_request.cc | 52 | ||||
-rw-r--r-- | o3d/plugin/cross/async_loading.cc | 39 |
2 files changed, 20 insertions, 71 deletions
diff --git a/o3d/import/cross/archive_request.cc b/o3d/import/cross/archive_request.cc index 86d8a57..4ced695 100644 --- a/o3d/import/cross/archive_request.cc +++ b/o3d/import/cross/archive_request.cc @@ -1,34 +1,8 @@ -/* - * Copyright 2009, Google Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - +// @@REWRITE(insert c-copyright) +// @@REWRITE(delete-start) +// Copyright 2009 Google Inc. All Rights Reserved. +// Author: crogers@google.com (Chris Rogers) +// @@REWRITE(delete-end) // This file contains the definition of the ArchiveRequest class. @@ -106,11 +80,12 @@ int32 ArchiveRequest::WriteCallback(DownloadStream *stream, archive_processor_->ProcessCompressedBytes(&memory_stream, length); if (result != Z_OK && result != Z_STREAM_END) { - stream->Cancel(); // tell the browser to stop downloading set_success(false); - set_error("Invalid tar gz file"); - if (onreadystatechange()) - onreadystatechange()->Run(); // javascript callback with failure + set_error("Invalid gzipped tar file"); + stream->Cancel(); // tell the browser to stop downloading + // NOTE: Cancel will call NPP_Cancel which in turn will call + // ArchiveRequest::FinishedCallback so we don't do anything here since + // we may already have been deleted on return. } return length; @@ -130,9 +105,10 @@ void ArchiveRequest::FinishedCallback(DownloadStream *stream, set_success(success); if (!success) { // I have no idea if an error is already set here but one MUST be set - // so let's check - set_error("Could not download archive. It could be a permission-related " - "issue."); + // so let's check. + if (error().empty()) { + set_error(String("Could not download archive: ") + uri()); + } } if (onreadystatechange()) onreadystatechange()->Run(); diff --git a/o3d/plugin/cross/async_loading.cc b/o3d/plugin/cross/async_loading.cc index 6c75d82..2040d3c 100644 --- a/o3d/plugin/cross/async_loading.cc +++ b/o3d/plugin/cross/async_loading.cc @@ -1,34 +1,8 @@ -/* - * Copyright 2009, Google Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - +// @@REWRITE(insert c-copyright) +// @@REWRITE(delete-start) +// Copyright 2008 Google Inc. All Rights Reserved. +// Author: piman@google.com (Antoine Labour) +// @@REWRITE(delete-end) // This file implements the asynchronous file-loading glue. @@ -107,8 +81,7 @@ class LoadTextureURLCallback : public StreamManager::FinishedCallback { } else { // No error is passed in from the stream but we MUST have an error // for the request to work on the javascript side. - request_->set_error("Could not download texture. It could be a " - "permission-related issue."); + request_->set_error("Could not download texture: " + request_->uri()); } request_->set_success(success); // Since the standard codes only go far enough to tell us that the download |